Da Vinci Clinical Data Exchange (CDex)
2.1.0-preview - CI Build United States of America flag

Da Vinci Clinical Data Exchange (CDex), published by HL7 International / Payer/Provider Information Exchange Work Group. This guide is not an authorized publication; it is the continuous build for version 2.1.0-preview built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/davinci-ecdx/ and changes regularly. See the Directory of published versions

Direct Query

Page standards status: Informative

Introduction

For Direct Query, the Data Consumer directly queries the Data Source for specific data using the standard FHIR RESTful search. The base FHIR specification and the Da Vinci HRex Implementation Guide document this interaction. Refer to the US Core 3.1.1 or US Core 6.1.0 Implementation guide for accessing the set of health data classes and data elements defined by the ONC United States Core Data for Interoperability (USCDI).

Benefits

  • “Out of the Box” FHIR transaction
  • Widely implemented
  • Simplest workflow
  • Authorization/Authentication protocols established
  • No human intervention is needed

Sequence Diagram

The sequence diagram in Figure 6 below outlines a successful interaction between the Data Consumer and Data Source to query and retrieve the requested data using a direct query:

Figure 6
search-sequencediagram.svg

Discovery of Patient FHIR IDs

In addition to using a patient business identifier such as an MRN or Member ID, the FHIR Patient.id is often a prerequisite to performing FHIR RESTful Direct Queries and other transactions described in this guide. However, there is no requirement that the requester knows the FHIR Patient.id in advance of the exchange. With sufficient demographic information and/or identifiers, any of the following FHIR transaction can be used discover the FHIR Patient.id:

  1. Call the patient $match operation to ask an MPI to match a patient.
    • CDex Data Source servers SHOULD support the patient match operation and declare it in their CapabilityStatement.
  2. Search the Patient using a Direct Query.
    • For example:

      `Get /Patient?identifier=[member_id]&birthdate=[date]&name=[name]&gender=[gender]`
      
    • CDex Data Source servers SHALL support resolving logical identifiers for the Patient resource.

  3. Use the Task Based Approach to request the Patient resource.

The Interoperable Digital Identity and Patient Matching guide extends the patient $match operation for cross-organizational use by highlighting best practices in using matching attributes and their verification prior to responding to a patient match request or interpreting match results. It also serves as a set of best practices for patient matching in similar FHIR transactions like Direct Query or Task based approach. Implementers are encouraged to review the following sections:

Direct Query Transaction Scenarios

The following example transactions show scenarios of using direct query to get clinical data from a Data Source(HIT).

Scenario 1

Payer A Seeks Insured Person/Patient B’s Active Conditions from Provider C to support a claims audit.

Preconditions and Assumptions:

  • Payer A is authorized and has the appropriate scopes to access the health records of Patient B from Provider C using FHIR RESTful queries
  • Payer A knows the FHIR id of the Patient resource for Patient B
  • Payer A knows the appropriate codes for searching for active conditions

Following the guidance in US Core, a search for all active conditions uses the combination of the patient and clinical-status search parameters:

GET [base]/Condition?patient=[FHIR id]&clinical-status=active,recurrance,remission

Request

GET [base]/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&clinical-status=active,recurrance,remission

Request Headers

Accept: application/fhir+json
Content-Type: application/fhir+json
...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 04:54:56 GMT
Content-Type: application/fhir+json;charset=utf-8
...(other headers)

Response Body

{
  "resourceType" : "Bundle",
  "id" : "cdex-searchbundle-scenario1-example",
  "meta" : {
    "lastUpdated" : "2020-10-23T04:54:56.048+00:00"
  },
  "type" : "searchset",
  "total" : 1,
  "link" : [{
    "relation" : "self",
    "url" : "http://hapi.fhir.org/baseR4/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&clinical-status=active,recurrance,remission"
  }],
  "entry" : [{
    "fullUrl" : "http://hapi.fhir.org/baseR4/Condition/4ac41715-fcbd-421c-8796-9b2c9706dd3f",
    "resource" : {
      "resourceType" : "Condition",
      "id" : "4ac41715-fcbd-421c-8796-9b2c9706dd3f",
      "meta" : {
        "versionId" : "10",
        "lastUpdated" : "2020-04-28T20:28:00.008+00:00",
        "source" : "#cabiJIK51sD2iz4N",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-encounter-diagnosis|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Condition_4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Condition 4ac41715-fcbd-421c-8796-9b2c9706dd3f</b></p><a name=\"4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Condition.meta.versionId): element = id -&gt; versionId=id[10]; Last updated: 2020-04-28 20:28:00+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #cabiJIK51sD2iz4N</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-condition.html\">US Core Condition Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html\">US Core Condition Encounter Diagnosis Profileversion: {0}6.1.0)</a></p></div><p><b>clinicalStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-clinical active}\">Active</span></p><p><b>verificationStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-ver-status confirmed}\">Confirmed</span></p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-category encounter-diagnosis}\">Encounter Diagnosis</span></p><p><b>code</b>: <span title=\"Codes:{http://snomed.info/sct 122481008}\">Hammer Toe</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">??</a></p><p><b>encounter</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82\">??</a></p><p><b>onset</b>: 2018-10-21 21:22:15-0700</p><p><b>recordedDate</b>: 2018-10-21 21:22:15-0700</p></div>"
      },
      "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" : "122481008",
          "display" : "Hammer toe (disorder)"
        }],
        "text" : "Hammer Toe"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b"
      },
      "encounter" : {
        "reference" : "Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82"
      },
      "onsetDateTime" : "2018-10-21T21:22:15-07:00",
      "recordedDate" : "2018-10-21T21:22:15-07:00"
    },
    "search" : {
      "mode" : "match"
    }
  }]
}



Scenario 2

Payer A Seeks Insured Person/Patient B’s glycated hemoglobin (HbA1c) test results after 2020-01-01 from Provider C for Quality reporting requirements and quality care scoring.

Preconditions and Assumptions:

  • Payer A is authorized and has the appropriate scopes to access the health records of Patient B from Provider C using FHIR RESTful Queries
  • Payer A knows the FHIR id of the Patient resource for Patient B
  • Payer A knows the appropriate LOINC codes for searching for HbA1c test results (e.g., 4548-5 Hemoglobin A1c/Hemoglobin.total in Blood)

Following the guidance in US Core searches for all HbA1c test results by a date range using the combination of the patient and code and date search parameters:

GET [base]/Observation?patient=[FHIR id]&code=[code]&date=gt[date]

Request

GET [base]/Observation?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&code=4548-4&date=gt2020-01-01

Request Headers

Accept: application/fhir+json
Content-Type: application/fhir+json
...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 18:22:45 GMT
Content-Type: application/fhir+json;charset=utf-8
...(other headers)

Response Body

{
  "resourceType" : "Bundle",
  "id" : "cdex-searchbundle-scenario2-example",
  "meta" : {
    "lastUpdated" : "2020-10-23T18:22:45.274+00:00"
  },
  "type" : "searchset",
  "total" : 4,
  "link" : [{
    "relation" : "self",
    "url" : "http://hapi.fhir.org/baseR4/Observation?code=4548-4&date=gt2020-01-01&patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b"
  }],
  "entry" : [{
    "fullUrl" : "http://hapi.fhir.org/baseR4/Observation/cdex-2020-01-23-hba1c-example",
    "resource" : {
      "resourceType" : "Observation",
      "id" : "cdex-2020-01-23-hba1c-example",
      "meta" : {
        "versionId" : "1",
        "lastUpdated" : "2020-10-23T18:18:25.154+00:00",
        "source" : "#ObC36PK40pQM6y5M",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Observation_cdex-2020-01-23-hba1c-example\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Observation cdex-2020-01-23-hba1c-example</b></p><a name=\"cdex-2020-01-23-hba1c-example\"> </a><a name=\"hccdex-2020-01-23-hba1c-example\"> </a><a name=\"hccdex-2020-01-23-hba1c-example-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Observation.meta.versionId): element = id -&gt; versionId=id[1]; Last updated: 2020-10-23 18:18:25+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #ObC36PK40pQM6y5M</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}6.1.0)</a></p></div><p><b>status</b>: Final</p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/observation-category laboratory}\">Laboratory</span></p><p><b>code</b>: <span title=\"Codes:{http://loinc.org 4548-4}, {http://www.ama-assn.org/go/cpt 83036}, {http://example.org/lab-results HBA1C}\">glycated hemoglobin (HbA1c)</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">Elden718 Halvorson124</a></p><p><b>effective</b>: 2020-01-23 10:21:08-0700</p><p><b>performer</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/min\">Dr. John Doe</a></p><p><b>value</b>: 6 %<span style=\"background: LightGoldenRodYellow\"> (Details: UCUM  code% = '%')</span></p></div>"
      },
      "status" : "final",
      "category" : [{
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/observation-category",
          "code" : "laboratory",
          "display" : "Laboratory"
        }],
        "text" : "Laboratory"
      }],
      "code" : {
        "coding" : [{
          "system" : "http://loinc.org",
          "code" : "4548-4",
          "display" : "Hemoglobin A1c/Hemoglobin.total in Blood"
        },
        {
          "system" : "http://www.ama-assn.org/go/cpt",
          "code" : "83036",
          "display" : "Hemoglobin; glycosylated (A1c)"
        },
        {
          "system" : "http://example.org/lab-results",
          "code" : "HBA1C",
          "display" : "Glycated hemoglobin (HbA1c)"
        }],
        "text" : "glycated hemoglobin (HbA1c)"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b",
        "display" : "Elden718 Halvorson124"
      },
      "effectiveDateTime" : "2020-01-23T10:21:08-07:00",
      "performer" : [{
        "reference" : "Practitioner/min",
        "display" : "Dr. John Doe"
      }],
      "valueQuantity" : {
        "value" : 6,
        "unit" : "%",
        "system" : "http://unitsofmeasure.org",
        "code" : "%"
      }
    },
    "search" : {
      "mode" : "match"
    }
  },
  {
    "fullUrl" : "http://hapi.fhir.org/baseR4/Observation/cdex-2020-04-23-hba1c-example",
    "resource" : {
      "resourceType" : "Observation",
      "id" : "cdex-2020-04-23-hba1c-example",
      "meta" : {
        "versionId" : "1",
        "lastUpdated" : "2020-10-23T18:17:49.885+00:00",
        "source" : "#n7aoEe76sAQUBlns",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Observation_cdex-2020-04-23-hba1c-example\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Observation cdex-2020-04-23-hba1c-example</b></p><a name=\"cdex-2020-04-23-hba1c-example\"> </a><a name=\"hccdex-2020-04-23-hba1c-example\"> </a><a name=\"hccdex-2020-04-23-hba1c-example-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Observation.meta.versionId): element = id -&gt; versionId=id[1]; Last updated: 2020-10-23 18:17:49+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #n7aoEe76sAQUBlns</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}6.1.0)</a></p></div><p><b>status</b>: Final</p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/observation-category laboratory}\">Laboratory</span></p><p><b>code</b>: <span title=\"Codes:{http://loinc.org 4548-4}, {http://www.ama-assn.org/go/cpt 83036}, {http://example.org/lab-results HBA1C}\">glycated hemoglobin (HbA1c)</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">Elden718 Halvorson124</a></p><p><b>effective</b>: 2020-04-23 10:21:08-0700</p><p><b>performer</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/min\">Dr. John Doe</a></p><p><b>value</b>: 7.2 %<span style=\"background: LightGoldenRodYellow\"> (Details: UCUM  code% = '%')</span></p></div>"
      },
      "status" : "final",
      "category" : [{
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/observation-category",
          "code" : "laboratory",
          "display" : "Laboratory"
        }],
        "text" : "Laboratory"
      }],
      "code" : {
        "coding" : [{
          "system" : "http://loinc.org",
          "code" : "4548-4",
          "display" : "Hemoglobin A1c/Hemoglobin.total in Blood"
        },
        {
          "system" : "http://www.ama-assn.org/go/cpt",
          "code" : "83036",
          "display" : "Hemoglobin; glycosylated (A1c)"
        },
        {
          "system" : "http://example.org/lab-results",
          "code" : "HBA1C",
          "display" : "Glycated hemoglobin (HbA1c)"
        }],
        "text" : "glycated hemoglobin (HbA1c)"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b",
        "display" : "Elden718 Halvorson124"
      },
      "effectiveDateTime" : "2020-04-23T10:21:08-07:00",
      "performer" : [{
        "reference" : "Practitioner/min",
        "display" : "Dr. John Doe"
      }],
      "valueQuantity" : {
        "value" : 7.2,
        "unit" : "%",
        "system" : "http://unitsofmeasure.org",
        "code" : "%"
      }
    },
    "search" : {
      "mode" : "match"
    }
  },
  {
    "fullUrl" : "http://hapi.fhir.org/baseR4/Observation/cdex-2020-10-23-hba1c-example",
    "resource" : {
      "resourceType" : "Observation",
      "id" : "cdex-2020-10-23-hba1c-example",
      "meta" : {
        "versionId" : "1",
        "lastUpdated" : "2020-10-23T18:16:54.549+00:00",
        "source" : "#fuIEQP7SJ9NfAlPN",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Observation_cdex-2020-10-23-hba1c-example\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Observation cdex-2020-10-23-hba1c-example</b></p><a name=\"cdex-2020-10-23-hba1c-example\"> </a><a name=\"hccdex-2020-10-23-hba1c-example\"> </a><a name=\"hccdex-2020-10-23-hba1c-example-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Observation.meta.versionId): element = id -&gt; versionId=id[1]; Last updated: 2020-10-23 18:16:54+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #fuIEQP7SJ9NfAlPN</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}6.1.0)</a></p></div><p><b>status</b>: Final</p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/observation-category laboratory}\">Laboratory</span></p><p><b>code</b>: <span title=\"Codes:{http://loinc.org 4548-4}, {http://www.ama-assn.org/go/cpt 83036}, {http://example.org/lab-results HBA1C}\">glycated hemoglobin (HbA1c)</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">Elden718 Halvorson124</a></p><p><b>effective</b>: 2020-10-23 10:21:08-0700</p><p><b>performer</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/min\">Dr. John Doe</a></p><p><b>value</b>: 7 %<span style=\"background: LightGoldenRodYellow\"> (Details: UCUM  code% = '%')</span></p></div>"
      },
      "status" : "final",
      "category" : [{
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/observation-category",
          "code" : "laboratory",
          "display" : "Laboratory"
        }],
        "text" : "Laboratory"
      }],
      "code" : {
        "coding" : [{
          "system" : "http://loinc.org",
          "code" : "4548-4",
          "display" : "Hemoglobin A1c/Hemoglobin.total in Blood"
        },
        {
          "system" : "http://www.ama-assn.org/go/cpt",
          "code" : "83036",
          "display" : "Hemoglobin; glycosylated (A1c)"
        },
        {
          "system" : "http://example.org/lab-results",
          "code" : "HBA1C",
          "display" : "Glycated hemoglobin (HbA1c)"
        }],
        "text" : "glycated hemoglobin (HbA1c)"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b",
        "display" : "Elden718 Halvorson124"
      },
      "effectiveDateTime" : "2020-10-23T10:21:08-07:00",
      "performer" : [{
        "reference" : "Practitioner/min",
        "display" : "Dr. John Doe"
      }],
      "valueQuantity" : {
        "value" : 7,
        "unit" : "%",
        "system" : "http://unitsofmeasure.org",
        "code" : "%"
      }
    },
    "search" : {
      "mode" : "match"
    }
  },
  {
    "fullUrl" : "http://hapi.fhir.org/baseR4/Observation/cdex-2020-07-23-hba1c-example",
    "resource" : {
      "resourceType" : "Observation",
      "id" : "cdex-2020-07-23-hba1c-example",
      "meta" : {
        "versionId" : "1",
        "lastUpdated" : "2020-10-23T18:16:17.687+00:00",
        "source" : "#X2hXINwPYymTmEJc",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Observation_cdex-2020-07-23-hba1c-example\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Observation cdex-2020-07-23-hba1c-example</b></p><a name=\"cdex-2020-07-23-hba1c-example\"> </a><a name=\"hccdex-2020-07-23-hba1c-example\"> </a><a name=\"hccdex-2020-07-23-hba1c-example-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Observation.meta.versionId): element = id -&gt; versionId=id[1]; Last updated: 2020-10-23 18:16:17+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #X2hXINwPYymTmEJc</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-observation-lab.html\">US Core Laboratory Result Observation Profileversion: {0}6.1.0)</a></p></div><p><b>status</b>: Final</p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/observation-category laboratory}\">Laboratory</span></p><p><b>code</b>: <span title=\"Codes:{http://loinc.org 4548-4}, {http://www.ama-assn.org/go/cpt 83036}, {http://example.org/lab-results HBA1C}\">glycated hemoglobin (HbA1c)</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">Elden718 Halvorson124</a></p><p><b>effective</b>: 2020-07-23 10:21:08-0700</p><p><b>performer</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/min\">Dr. John Doe</a></p><p><b>value</b>: 7 %<span style=\"background: LightGoldenRodYellow\"> (Details: UCUM  code% = '%')</span></p></div>"
      },
      "status" : "final",
      "category" : [{
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/observation-category",
          "code" : "laboratory",
          "display" : "Laboratory"
        }],
        "text" : "Laboratory"
      }],
      "code" : {
        "coding" : [{
          "system" : "http://loinc.org",
          "code" : "4548-4",
          "display" : "Hemoglobin A1c/Hemoglobin.total in Blood"
        },
        {
          "system" : "http://www.ama-assn.org/go/cpt",
          "code" : "83036",
          "display" : "Hemoglobin; glycosylated (A1c)"
        },
        {
          "system" : "http://example.org/lab-results",
          "code" : "HBA1C",
          "display" : "Glycated hemoglobin (HbA1c)"
        }],
        "text" : "glycated hemoglobin (HbA1c)"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b",
        "display" : "Elden718 Halvorson124"
      },
      "effectiveDateTime" : "2020-07-23T10:21:08-07:00",
      "performer" : [{
        "reference" : "Practitioner/min",
        "display" : "Dr. John Doe"
      }],
      "valueQuantity" : {
        "value" : 7,
        "unit" : "%",
        "system" : "http://unitsofmeasure.org",
        "code" : "%"
      }
    },
    "search" : {
      "mode" : "match"
    }
  }]
}



Scenario 3

Payer A Seeks Insured Person/Patient B’s latest Progress notes from Provider C to support a claim submission.

Preconditions and Assumptions:

  • Payer A is authorized and has the appropriate scopes to access the health records of Patient B from Provider C using FHIR RESTful Queries
  • Payer A knows the FHIR id of the Patient resource for Patient B
  • Payer A knows the appropriate LOINC codes for searching for Progress note CCDA documents (11506-3 History & Physical Note)
  • Provider C supports the standard FHIR search parameters, _search and _count (if this is not the case, then the Payer can search using the date parameter and select the most recent Progress notes for the query results.)

Getting the latest Progress note is typically a two-step process:

  1. Query DocumentReference, which references the actual notes file
  2. Fetch the notes file

Following the US Core Clinical Notes Guidance section, the Payer searches for the Progress note C-CDA documents using the combination of the patient and type search parameters. In addition, the combination of _sort and _count is used to return only the latest resource that meets particular criteria. For example, with _sort=-period (sort by the date parameter in descending order) and _count=1, the query returns the most current matching resource.

GET [base]/DocumentReference?patient=[FHIR id]&type=[type-code]&_sort=-period&_count=1

The DocumentReference.content.attachment.url element references the actual CCDA document, and the Payer fetches it using a RESTful GET.

GET [base]/[url]

Step 1 - Search for DocumentReference

Request

GET [base]/DocumentReference?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&type=34117-2&_sort=-period&_count=1`

Request Headers

Accept: application/fhir+json
Content-Type: application/fhir+json
...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 18:22:45 GMT
Content-Type: application/fhir+json;charset=utf-8
...(other headers)

Response Body

{
  "resourceType" : "Bundle",
  "id" : "cdex-searchbundle-scenario3-example",
  "meta" : {
    "lastUpdated" : "2020-10-23T20:29:25.663+00:00"
  },
  "type" : "searchset",
  "total" : 1,
  "link" : [{
    "relation" : "self",
    "url" : "http://hapi.fhir.org/baseR4/DocumentReference?_count=1&_sort=-period&patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&type=34117-2"
  }],
  "entry" : [{
    "fullUrl" : "http://hapi.fhir.org/baseR4/DocumentReference/cdex-HP-example1",
    "resource" : {
      "resourceType" : "DocumentReference",
      "id" : "cdex-HP-example1",
      "meta" : {
        "versionId" : "1",
        "lastUpdated" : "2020-10-23T20:27:18.976+00:00",
        "source" : "#XOrE2IwfLwl5C1RV",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"DocumentReference_cdex-HP-example1\"> </a><p class=\"res-header-id\"><b>Generated Narrative: DocumentReference cdex-HP-example1</b></p><a name=\"cdex-HP-example1\"> </a><a name=\"hccdex-HP-example1\"> </a><a name=\"hccdex-HP-example1-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/DocumentReference.meta.versionId): element = id -&gt; versionId=id[1]; Last updated: 2020-10-23 20:27:18+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #XOrE2IwfLwl5C1RV</p><p style=\"margin-bottom: 0px\">Profile: <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html\">US Core DocumentReference Profile</a></p></div><p><b>identifier</b>: <a href=\"http://terminology.hl7.org/5.5.0/NamingSystem-uri.html\" title=\"As defined by RFC 3986 (http://www.ietf.org/rfc/rfc3986.txt)(with many schemes defined in many RFCs). For OIDs and UUIDs, use the URN form (urn:oid:(note: lowercase) and urn:uuid:). See http://www.ietf.org/rfc/rfc3001.txt and http://www.ietf.org/rfc/rfc4122.txt \r\n\r\nThis oid is used as an identifier II.root to indicate the the extension is an absolute URI (technically, an IRI). Typically, this is used for OIDs and GUIDs. Note that when this OID is used with OIDs and GUIDs, the II.extension should start with urn:oid or urn:uuid: \r\n\r\nNote that this OID is created to aid with interconversion between CDA and FHIR - FHIR uses urn:ietf:rfc:3986 as equivalent to this OID. URIs as identifiers appear more commonly in FHIR.\r\n\r\nThis OID may also be used in CD.codeSystem.\">Uniform Resource Identifier (URI)</a>/urn:oid:2.16.840.1.113883.19.5.99999.2</p><p><b>status</b>: Current</p><p><b>type</b>: <span title=\"Codes:{http://loinc.org 34117-2}\">History and physical note</span></p><p><b>category</b>: <span title=\"Codes:{http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category clinical-note}\">Clinical Note</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">Elden718 Halvorson124</a></p><p><b>date</b>: 2020-10-23 10:21:08-0700</p><p><b>author</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/0000016f-57cb-cdac-0000-00000000014a\">Janeth814 Jakubowski832, MD</a></p><p><b>description</b>: Pulmonology clinic acute visit</p><blockquote><p><b>content</b></p><h3>Attachments</h3><table class=\"grid\"><tr><td style=\"display: none\">-</td><td><b>ContentType</b></td><td><b>Url</b></td><td><b>Title</b></td></tr><tr><td style=\"display: none\">*</td><td>text/plain</td><td><a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core//Binary/cdex-example-hpnote\">/Binary/cdex-example-hpnote</a></td><td>Uri where the data can be found: [base]/Binary/1-note</td></tr></table><p><b>format</b>: <a href=\"http://terminology.hl7.org/5.5.0/CodeSystem-v3-HL7DocumentFormatCodes.html#v3-HL7DocumentFormatCodes-urn.58hl7-org.58sdwg.58ccda-structuredBody.582.461\">HL7 Document Format Codes</a> urn:hl7-org:sdwg:ccda-structuredBody:2.1: ccda-structuredBody:2.1</p></blockquote><h3>Contexts</h3><table class=\"grid\"><tr><td style=\"display: none\">-</td><td><b>Period</b></td></tr><tr><td style=\"display: none\">*</td><td>2020-10-23 10:21:06-0700 --&gt; 2020-10-23 10:21:08-0700</td></tr></table></div>"
      },
      "identifier" : [{
        "system" : "urn:ietf:rfc:3986",
        "value" : "urn:oid:2.16.840.1.113883.19.5.99999.2"
      }],
      "status" : "current",
      "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"
        }],
        "text" : "Clinical Note"
      }],
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b",
        "display" : "Elden718 Halvorson124"
      },
      "date" : "2020-10-23T10:21:08-07:00",
      "author" : [{
        "reference" : "Practitioner/0000016f-57cb-cdac-0000-00000000014a",
        "display" : "Janeth814 Jakubowski832, MD"
      }],
      "description" : "Pulmonology clinic acute visit",
      "content" : [{
        "attachment" : {
          "contentType" : "text/plain",
          "url" : "/Binary/cdex-example-hpnote",
          "title" : "Uri where the data can be found: [base]/Binary/1-note"
        },
        "format" : {
          "system" : "http://terminology.hl7.org/CodeSystem/v3-HL7DocumentFormatCodes",
          "code" : "urn:hl7-org:sdwg:ccda-structuredBody:2.1",
          "display" : "ccda-structuredBody:2.1"
        }
      }],
      "context" : {
        "period" : {
          "start" : "2020-10-23T10:21:06-07:00",
          "end" : "2020-10-23T10:21:08-07:00"
        }
      }
    },
    "search" : {
      "mode" : "match"
    }
  }]
}

Step 2 - Fetch Document

Request

GET [base]/Binary/cdex-example-hpnote`

Request Headers

...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 22:02:15 GMT
Content-Type: application/pdf
...(other headers)

Response Body = PDF


Provenance

To the extent that the Data Source keeps a record of the provenance of the data, the FHIR Provenance Resource can be requested as documented on US Core’s Basic Provenance page. When returning provenance, they should use the HRex Provenance Profile. The following example illustrates this transaction.

Example of Direct Query Response Including Provenance

This example is the same as Scenario 1 above, except that it includes the corresponding Provenance records.

GET [base]/Condition?patient=[FHIR id]&clinical-status=active,recurrance,remission&_revinclude=Provenance:target

Request

GET [base]/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&clinical-status=active,recurrance,remission&_revinclude=Provenance:target

Request Headers

Accept: application/fhir+json
Content-Type: application/fhir+json
...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 04:54:56 GMT
Content-Type: application/fhir+json;charset=utf-8
...(other headers)

Response Body

{
  "resourceType" : "Bundle",
  "id" : "cdex-searchbundle-provenance-example",
  "meta" : {
    "lastUpdated" : "2020-10-23T04:54:56.048+00:00"
  },
  "type" : "searchset",
  "total" : 1,
  "link" : [{
    "relation" : "self",
    "url" : "http://hapi.fhir.org/baseR4/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&clinical-status=active,recurrance,remission&_revinclude=Provenance:target"
  }],
  "entry" : [{
    "fullUrl" : "http://hapi.fhir.org/baseR4/Condition/4ac41715-fcbd-421c-8796-9b2c9706dd3f",
    "resource" : {
      "resourceType" : "Condition",
      "id" : "4ac41715-fcbd-421c-8796-9b2c9706dd3f",
      "meta" : {
        "versionId" : "10",
        "lastUpdated" : "2020-04-28T20:28:00.008+00:00",
        "source" : "#cabiJIK51sD2iz4N",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-encounter-diagnosis|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Condition_4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Condition 4ac41715-fcbd-421c-8796-9b2c9706dd3f</b></p><a name=\"4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Condition.meta.versionId): element = id -&gt; versionId=id[10]; Last updated: 2020-04-28 20:28:00+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #cabiJIK51sD2iz4N</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-condition.html\">US Core Condition Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html\">US Core Condition Encounter Diagnosis Profileversion: {0}6.1.0)</a></p></div><p><b>clinicalStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-clinical active}\">Active</span></p><p><b>verificationStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-ver-status confirmed}\">Confirmed</span></p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-category encounter-diagnosis}\">Encounter Diagnosis</span></p><p><b>code</b>: <span title=\"Codes:{http://snomed.info/sct 122481008}\">Hammer Toe</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">??</a></p><p><b>encounter</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82\">??</a></p><p><b>onset</b>: 2018-10-21 21:22:15-0700</p><p><b>recordedDate</b>: 2018-10-21 21:22:15-0700</p></div>"
      },
      "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" : "122481008",
          "display" : "Hammer toe (disorder)"
        }],
        "text" : "Hammer Toe"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b"
      },
      "encounter" : {
        "reference" : "Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82"
      },
      "onsetDateTime" : "2018-10-21T21:22:15-07:00",
      "recordedDate" : "2018-10-21T21:22:15-07:00"
    },
    "search" : {
      "mode" : "match"
    }
  },
  {
    "fullUrl" : "http://hapi.fhir.org/baseR4/Provenance/b2ce4584-b213-411b-bdc9-d515dc92eadf",
    "resource" : {
      "resourceType" : "Provenance",
      "id" : "b2ce4584-b213-411b-bdc9-d515dc92eadf",
      "meta" : {
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Provenance_b2ce4584-b213-411b-bdc9-d515dc92eadf\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Provenance b2ce4584-b213-411b-bdc9-d515dc92eadf</b></p><a name=\"b2ce4584-b213-411b-bdc9-d515dc92eadf\"> </a><a name=\"hcb2ce4584-b213-411b-bdc9-d515dc92eadf\"> </a><a name=\"hcb2ce4584-b213-411b-bdc9-d515dc92eadf-en-US\"> </a><p>Provenance for <a href=\"Bundle-cdex-bundle-inline-example-858p.html#Condition_4ac41715-fcbd-421c-8796-9b2c9706dd3f\">Bundle: type = searchset; total = 1</a></p><p>Summary</p><table class=\"grid\"><tr><td>Recorded</td><td>2018-10-21 21:22:15-0700</td></tr></table><p><b>Agents</b></p><table class=\"grid\"><tr><td><b>Type</b></td><td><b>who</b></td><td><b>On Behalf Of</b></td></tr><tr><td><span title=\"Codes:{http://terminology.hl7.org/CodeSystem/provenance-participant-type author}\">Author</span></td><td><a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Practitioner/min\">??</a></td><td><a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Organization/min\">??</a></td></tr></table></div>"
      },
      "target" : [{
        "reference" : "Condition/4ac41715-fcbd-421c-8796-9b2c9706dd3f"
      }],
      "recorded" : "2018-10-21T21:22:15-07:00",
      "agent" : [{
        "type" : {
          "coding" : [{
            "system" : "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
            "code" : "author",
            "display" : "Author"
          }]
        },
        "who" : {
          "reference" : "Practitioner/min"
        },
        "onBehalfOf" : {
          "reference" : "Organization/min"
        }
      }]
    },
    "search" : {
      "mode" : "include"
    }
  }]
}



Signatures

This specification does not require signatures but supports the transmission of signatures if business agreements require them.

Some data consumers may require that the data they receive are signed. When signatures are required, the following general rules apply:

  • The signature representing the sending system is a system-level attestation by the sending organization that they supplied the information. It is a complete and accurate representation of the shareable information from that system, meeting the requested criteria. This signature does NOT attest that the information is accurate because the system can’t make that determination.*
  • The Bundle.signature element on the FHIR search set Bundle is used to exchange the signature.

* Consult with your Payer and your legal team for questions regarding legal liability associated with sharing and signing data.

The Data Consumer/Requester Requirements

  • The Data Consumer/Requester pre-negotiates with the Data Source/Responder whether electronic or digital signatures are required. If signatures are required, all search query response data will be signed by the sending organization.
  • The Data Consumer/Requester follows the documentation on the Signatures page for validating signatures.
    • If the signatures fail verification, the Data Consumer/Requester notifies the Data Source that the signature is invalid or absent. Currently, there is no standard way to communicate this, and it needs to be done “out of band”.

Data Source/Responder Requirements

  • If signatures are required, the Data Source/Responder returns a signed FHIR search set Bundle using the Bundle.signature element for the signature signed by the organization responding to the query.
  • The Data Source/Responder follows the documentation on the Signatures page for producing signatures.
  • As discussed in the What is Signed section, a signed search bundle could have entries within it that are individually signed as well. Therefore, if the Data Consumer incorrectly assumed there would be a signature (wet, electronic, or digital) on an individual returned object within the search set Bundle (e.g., CCDA, PDF, Image, CDA on FHIR ), they can re-request it using a Task-based request and specify that it be signed (see Signatures for Task Based Requests).

When signatures are required, the Data Consumer must use a FHIR RESTful search instead of FHIR RESTful read. There is no CDex support for signatures on a FHIR RESTful read because it fetches a single instance of a resource instead of a Bundle. If the Data Consumer attempts to fetch a resource with a read and a signature is required, the Data Source/Responder SHALL return an HTTP 400 Bad Request and an OperationOutcome describing the business rule error. The following HTTP response and OperationOutcome illustrate this.

  HTTP/1.1 400 Bad Request
  [other headers]
  {
    "resourceType": "OperationOutcome",
    "id": "cdex-signed-read-response",
    "issue": [
  {
    "severity": "error",
    "code": "business-rule",
    "details": {
      "text": "signed FHIR RESTful read response is not supported."
    },
    "diagnostics": "Resubmit the request as a FHIR RESTful search'"
  }
    ]
  }

Example of Signed Direct Query Response

This example is the same as Scenario 1 above, except that it includes a digital signature. See the Signatures page for a detailed explanation of how the signature was created and verified.

Preconditions and Assumptions:

  • In addition to the Scenario 1 assumptions above, Payer A pre-negotiated with Provider B that direct query responses require digital signatures.

GET [base]/Condition?patient=[FHIR id]&clinical-status=active,recurrance,remission

Request

GET [base]/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b&clinical-status=active,recurrance,remission

Request Headers

Accept: application/fhir+json
Content-Type: application/fhir+json
...(other headers)

Response Headers

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 23 Oct 2020 04:54:56 GMT
Content-Type: application/fhir+json;charset=utf-8
...(other headers)

Response Body

{
  "resourceType" : "Bundle",
  "id" : "cdex-searchbundle-digital-sig-example",
  "meta" : {
    "profile" : ["http://hl7.org/fhir/us/davinci-cdex/StructureDefinition/cdex-signature-bundle|2.1.0-preview"]
  },
  "type" : "searchset",
  "total" : 1,
  "link" : [{
    "relation" : "self",
    "url" : "http://hapi.fhir.org/baseR4/Condition?patient=06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b"
  }],
  "entry" : [{
    "fullUrl" : "http://hapi.fhir.org/baseR4/Condition/4ac41715-fcbd-421c-8796-9b2c9706dd3f",
    "resource" : {
      "resourceType" : "Condition",
      "id" : "4ac41715-fcbd-421c-8796-9b2c9706dd3f",
      "meta" : {
        "versionId" : "10",
        "lastUpdated" : "2020-04-28T20:28:00.008+00:00",
        "source" : "#cabiJIK51sD2iz4N",
        "profile" : ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition|3.1.1",
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-encounter-diagnosis|6.1.0"]
      },
      "text" : {
        "status" : "generated",
        "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><a name=\"Condition_4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><p class=\"res-header-id\"><b>Generated Narrative: Condition 4ac41715-fcbd-421c-8796-9b2c9706dd3f</b></p><a name=\"4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f\"> </a><a name=\"hc4ac41715-fcbd-421c-8796-9b2c9706dd3f-en-US\"> </a><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">version: versionId: id (PrimitiveType/Condition.meta.versionId): element = id -&gt; versionId=id[10]; Last updated: 2020-04-28 20:28:00+0000; </p><p style=\"margin-bottom: 0px\">Information Source: #cabiJIK51sD2iz4N</p><p style=\"margin-bottom: 0px\">Profiles: <a href=\"http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-condition.html\">US Core Condition Profileversion: {0}3.1.1)</a>, <a href=\"http://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html\">US Core Condition Encounter Diagnosis Profileversion: {0}6.1.0)</a></p></div><p><b>clinicalStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-clinical active}\">Active</span></p><p><b>verificationStatus</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-ver-status confirmed}\">Confirmed</span></p><p><b>category</b>: <span title=\"Codes:{http://terminology.hl7.org/CodeSystem/condition-category encounter-diagnosis}\">Encounter Diagnosis</span></p><p><b>code</b>: <span title=\"Codes:{http://snomed.info/sct 122481008}\">Hammer Toe</span></p><p><b>subject</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b\">??</a></p><p><b>encounter</b>: <a href=\"https://simplifier.net/resolve?scope=hl7.fhir.us.core.3.1.1@3.1.1&amp;canonical=http://hl7.org/fhir/us/core/Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82\">??</a></p><p><b>onset</b>: 2018-10-21 21:22:15-0700</p><p><b>recordedDate</b>: 2018-10-21 21:22:15-0700</p></div>"
      },
      "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" : "122481008",
          "display" : "Hammer toe (disorder)"
        }],
        "text" : "Hammer Toe"
      },
      "subject" : {
        "reference" : "Patient/06e1f0dd-5fbe-4480-9bb4-6b54ec02d31b"
      },
      "encounter" : {
        "reference" : "Encounter/5fe62cd5-bfcf-4d3b-a1e9-80d6f75d6f82"
      },
      "onsetDateTime" : "2018-10-21T21:22:15-07:00",
      "recordedDate" : "2018-10-21T21:22:15-07:00"
    },
    "search" : {
      "mode" : "match"
    }
  }],
  "signature" : {
    "type" : [{
      "system" : "urn:iso-astm:E1762-95:2013",
      "code" : "1.2.840.10065.1.12.1.5",
      "display" : "Verification Signature"
    }],
    "when" : "2020-10-23T04:54:56.048+00:00",
    "who" : {
      "reference" : "Organization/min"
    },
    "data" : "ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXQwZVNJNklsSlRJaXdpZEhsd0lqb2lTbGRVSWl3aWRYTmxJam9pYzJsbklpd2llRFZqSWpwYklrMUpTVVV6ZWtORFFUQmxaMEYzU1VKQlowbEtRVTlMUmxsMlRYZFNLM2xSVFVFd1IwTlRjVWRUU1dJelJGRkZRa04zVlVGTlNVZE9UVkZ6ZDBOUldVUldVVkZIUlhkS1ZsVjZSVlJOUWtWSFFURlZSVU5CZDB0Uk1rWnpZVmRhZG1OdE5YQlpWRVZUVFVKQlIwRXhWVVZDZDNkS1ZUSkdNV015Um5OaFdGSjJUVkpWZDBWM1dVUldVVkZMUkVGNFNWcFhSbk5rUjJoc1VrZEdNRmxVUlhoR2VrRldRbWRPVmtKQlRVMUVhMVo1WVZkTloxTkhSbWhqZVhkblVrWmFUazFUVlhkSmQxbEtTMjlhU1doMlkwNUJVV3RDUm1oYWJHRkhSbWhqTUVKdldsZEdjMlJIYUd4YVIwWXdXVlJGZFdJelNtNU5RalJZUkZSSmVFMVVRWGxPZWtVelRrUkpkMDVHYjFoRVZFbDVUVlJCZVUxcVJUTk9SRWwzVGtadmQyZFpNSGhEZWtGS1FtZE9Wa0pCV1ZSQmJGWlVUVkpOZDBWUldVUldVVkZKUkVGd1JGbFhlSEJhYlRsNVltMXNhRTFTU1hkRlFWbEVWbEZSU0VSQmJGUlpXRlo2V1ZkNGNHUkhPSGhHVkVGVVFtZE9Wa0pCYjAxRVJXaHNXVmQ0TUdGSFZrVlpXRkpvVFZSRldFMUNWVWRCTVZWRlFYZDNUMUpZU25CWmVVSkpXVmRHZWt4RFFrVldhekI0U2xSQmFrSm5hM0ZvYTJsSE9YY3dRa05SUlZkR2JWWnZXVmRHZWxGSGFHeFpWM2d3WVVkV2ExbFlVbWhOVXpWMlkyMWpkMmRuUjJsTlFUQkhRMU54UjFOSllqTkVVVVZDUVZGVlFVRTBTVUpxZDBGM1oyZEhTMEZ2U1VKblVVUndTMk5UYTI5QlRUWnpWekl4SzNaWFZHVkpWazlIZURFd1RWZGhjMUY1TjFaSWFXUTJlbmx4V0VGQ1RTdDZibVpDYmxobGJubFZNR294UmxSMlVHMVNaazlFYjA5RVdGWjFVRlYzUkc5dGFFTklhQ3RpWTJ4WE9VdE5NbTgxTmpOamVGSkxSWFpDYm1GSWNuTnFkelY1VG0xNFR6Vlpha1ZTWW1oMFNHUlJaWEZyZEdSM00xWlpSVkpTT1VodmVFeFBNMFpyYzNwU01qa3lTRlJDTkhoWE0zbFhiRll6WjFSclRWRnZlbEJUWTBwTFNETmlSemhRY1hFMlFWbFFTamRETkZsQ1NXeFZVMlJDVFZac00zRnVaVVZtWnpkbWRYaHBSbVpZYjJaa1ZGWnROM0pOYVdsSE4xZzVlalF6VUdacGJIRmhaV2x6Wm0xMFVuaEJiRkozUlU1WWNrZ3pUM1pQUkZCNVREQnlWRzVIT0VOellrRllXVlpKVFcxa1pFaGxORnBHT1hCc2FEazFjMm8wY0UxVWFFeDBZMHBZTDI4NVdFaE1hbWczUlcxYWVXZEtTRmRGVVhFMFVIZEdkMXBrYldKalptaERiVTl5T0RoSU9FSmlWWEoxTHpkV05ucGljMGN4VGpGRFYyeHVaR3hpVm5wdVRDc3pTVTFQY2pocldHRklZMkZ1Y1daamEyZEdWalJGY201bWFrWktjVEZQU1dGQmJYTk5hamcxZUUxcmFubFlUSGxqVEV3dmRUVnVNbTgyUW1jNU15OVZVbVp4ZFU5dlUwbEhUME5TTWpWRVlWcDZjSGN5YXpOek4yOUZPV1JOZDBWWFdIUm1XR2RaZEdneVlteHFlVFYwUmtnd1IycHdUMnQ0TURkcU4xcFVOVWh1ZUc1c2MwTkJkMFZCUVdGT1FVMUVOSGRFUVZsRVZsSXdWRUpCVlhkQmQwVkNMM3BCVEVKblRsWklVVGhGUWtGTlEwSmxRWGRKVVZsRVZsSXdVa0pDYjNkSFNVbFhaRE5rTTB4dGFHeFpWM2d3WVVkV2ExbFlVbWhoVnpWcVRHMU9kbUpVUVU1Q1oydHhhR3RwUnpsM01FSkJVWE5HUVVGUFEwRlpSVUZEZFUxVlRuRTVZWGtySzJVMVdVTTNVVVpQT1RSeVpucDRSMUZ1UmpOSGEyeGFUa0ZZYlVseU4xQldSMlJwUjFreVIxUjRMemxTZEVoRGQxUkxlbXRNSzNsMlMyOXFaVm81WkZaTE9IZHlSMVpwVW10UEwycFZlVm9yUzJOWFVtOXJWV3B6TlRsdVkwcEhVazFUVTFKNGRHVkRVWFZxZERSb1pqSXJMM0ZXSzJZeWMwMVJkRVZ5ZDFCRk16QjJZbkZTV1ZWT1RrNUNWa1ZSY0dGUmVDOWhZMHBFVlhZNWRqZHpha2hwU2tSeFdIZFJLM0o2YWprMWFVaEJTV0ZsUlVoeFJpOU5jekl5Y0RKaVpWcDFjWFpKVVV0bFRXd3JjM1pXY1VoMGFYVjZWMjVHTkZVMlZrbHRjR3R5TkdKSWJEZGxaMVk1U0Rac05sUXlVMDFyYWpaeFJGVTFaVGxPWnpCYWJFeFVkRzl6YzJoQ1RHMXZjRVkzWlRkSWVYSlVSVUZ0Wms5UVMxRmxNRVZuT1VVeWRYSjZlSEZDZFVjMU5HczFNRWN5U2pCR2FWQnpVVXBCYUVacFRrZDNVMmMwVXpOSWVWWkVSemQxWlV0a01FdzVNM2RMVDA1UFdVZDJUVXRwZWtOSVFpdHdTM1pGVFVwdldqaDVPWFZwUWl0SVJsaGpjRGxTWVVweFNqazNTSEJhVkVWMksyeHBRM0F5VUZOWWVtTkxNSEl5TlZOamVXcEdObVJNYjNWTE1sTkNNekI0UVhaS09IUkZOVGcwSzJweFVUWkRSMlZqVlRsWWFuWnNRV3AxU21SRGNrUmxWbEJ6YW10dU4wOVFXRWNyT0ZoYVZUZDZjVWhhVG0xWVdERlpXVFJJTlhKblJVbzBPR3h5VlhKUU0wazRVaUpkZlEuLlN4eW5HX25kcFRaT09TeHJnWXo4YWpPQlZnYmd4dmIwMjJBaUdqenA3dEVWdWVvZ3A5R18yY3FKZEtYSDQ4bzdVUGJNSVhvQk56UWtkRnRhX1ZRamh5V1paS2t4djBCVG5Ra0xpUElvcTYxYkYybEFvXzJZbzFCd3AtSFF0Z0dud3JNckdaaWNqMVZpajBpMG82YlZOT1RKamo4WWlhR0Z2RUZrbEMxazRIcTVYbHlwb2NrNjBjREV5Qll6cDdva2tER0RYV0dsZ1FCRFdZR0hjeHphR0Z3T0ZRNnhaWjRVeU5FeUN3M3RSLVVIcEJfNnJBNGhZWERVVkpPdU96TEJmaW9HRU55Q09OMEV5QVZUVlZselE2V1JJM1M2OS01WkVNSjFxLUk2aUUxd29YQUNHaVY3M2FJdVNKb2hXUnNlUEpHUXgwQlZ1eFlTVk5Yejh0bnJoU3NDa24xNk5ZbXJDN19zV1dZSTE2dGlLZ1d5d0ZyaThfeExycENfTGc0LVpMVTQwYml1cFhZVXE1STRIdzZQNkZVSzVabXp6aVRQNXdyQ09MdkVCWTlLT29NTE12d08ySW93M0pQcTFTUmFlRFdKMWxvYkdxaEZPcVRWbVRvWDNwZzYzTWktMFBrZnRGN0F0dVVSMTUwYUhjWjJaSE1SQl9WczN0MVllbHAz"
  }
}