Skip to content

21st Century Cures Act, 170.315 (b)(10) Electronic Health Information Export

Kodjin FHIR Server v3 has been officially certified against §170.315 b(10) 2015 Cures Edition Health IT. For more details, see our CHPL listing. Mandatory disclosures can be found here.

170.315 (b)(10) requires the implementation of Electronic Health Information (EHI) export functionality. This encompasses the ability to generate export files for individual patients and entire patient populations in a computable format. Kodjin FHIR Server provides comprehensive support for this requirement through its Bulk Data Export feature. For a deeper understanding and comprehensive utilization of this feature beyond the (b)(10) requirements, please consult the provided documentation, which includes setup instructions, application settings, parameters, filtering options, and additional details.

File Format

Bulk Data Export files are formatted in NDJSON (New line delimited JSON), a modified version of the JSON format designed for efficient bulk data transfer. NDJSON follows a simplified JSON structure where resources are serialized without whitespace and separated by a newline pair (ASCII characters 13 and 10). This format aids in streamlining processing by ensuring that each NDJSON document contains only resources of a single type. Each line within the document represents a resource of that specific type. A single file can accommodate multiple resources for multiple patients with multiple records, although the resource type is the same across all entries per file.

Each NDJSON file will have a file naming convention of content{resource}.ndjson, where {resource} represents a FHIR resource type, i.e. Patient, Observation. Within each NDJSON file, only the resources of the named FHIR resource type will be included.

Resources Included (EHI Exported)

When exporting resources, all data from within the Patient compartment, as defined by HL7 FHIR R4, will be included. This means that all relevant information related to the patient, such as demographics, observations, medications, and other healthcare data, will be part of the exported resources.

Authentication and Authorization

Kodjin FHIR Server offer a robust set of access control methodologies that leverage the SMART on FHIR framework. These mechanisms provide options for controlling access to the 170.315(b)(10) EHI bulk data export functionality. Detailed information on setting up access control can be found in the access control documentation provided.

To meet the requirements for 170.315(b)(10), the following basic recommendation is detailed below:

  1. Implement User Authentication: Require users to authenticate themselves before accessing the EHI bulk data export functionality. This ensures that only authorized individuals can initiate data exports.

  2. Create a client registration specifically for EHI export with:

  3. user|system|patient/Export.write - allow start export operation (kick-off request & delete)
  4. user|system|patient/Export.read - allow check results (status request).

Ensure that the client registration has system-level scopes, granting access to all patient compartment data during the export process. This allows the limited group of users associated with this client to access the required data for EHI export.

Single Patient EHI Export - 170.315(b)(10)(i)

To meet the requirements of 170.315(b)(10)(i), Kodjin FHIR Server offers an export feature that allows for the extraction of data related to a single patient. This is achieved by utilizing a Parameters Resource filter against the Patient endpoint. Please refer to the patient-level export feature in the our documentation

Alternative Method: Exporting a Single Patient using the Group Endpoint Perform a request to the Group endpoint, including a Parameters filter in the request body. The filter is used to filter the patients within the specified group, and only the desired patient’s data will be exported.

Create a request to the Group endpoint:

GET {{BASE_URL}}/Group/[groupId]/$export

Include the example Parameters Resource from above in the request body.

By utilizing the Group endpoint and applying the Parameters filter, the export operation focuses on the patient within the specified group.

Patient Population EHI Export - 170.315(b)(10)(ii)

To meet the requirements of 170.315(b)(10)(ii), Kodjin FHIR Server exports all patients and their related data without applying any filtering parameters, as demonstrated in the Single Patient Export. However, it is important to acknowledge that filtering is a common occurrence in real-world scenarios, particularly during the migration of patient populations between health IT systems.

Understanding the Export Results

After successfully requesting a Single Patient EHI Export or Patient Population EHI Export, the response will be in the following format:

{ "output": [ { "type": "Observation", "url": "https://kodjin-example.edenlab.dev/io/kodjin-export/5df2f390-2285-4f0d-8917-f1064fb6479a/Observation.ndjson?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=user%2F20220805%2F%2Fs3%2Faws4_request&X-Amz-Date=20220805T085248Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=fe04d160c9405d322cf511bb2fb47f5c584ae8bdb2fba962db2b6a1c7c19125a" }, { "type": "Condition", "url": "https://kodjin-example.edenlab.dev/io/kodjin-export/5df2f390-2285-4f0d-8917-f1064fb6479a/Condition.ndjson?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=user%2F20220805%2F%2Fs3%2Faws4_request&X-Amz-Date=20220805T085248Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=b0ed0b70defe60154574ca9fb7ea927efeaf8b6cefaf33132c936cce0977eca3" }, { "type": "Patient", "url": "https://kodjin-example.edenlab.dev/io/kodjin-export/5df2f390-2285-4f0d-8917-f1064fb6479a/Patient.ndjson?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=user%2F20220805%2F%2Fs3%2Faws4_request&X-Amz-Date=20220805T085248Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=b3655b6c577f4f7c5860587d3379a6f2a42f2129636091005eb43c62c75acf87" } ], "request": "curl -X GET 'https://kodjin-example.edenlab.dev/fhir/Group/3a457da3-b10e-48f9-b78e-467c396f8092/$export?_type=Observation,Condition&_since=2022-07-13T00:00:00Z&_typeFilter=Observation%3Fcode%3Dhttp://loinc.org|718-7,Condition%3Fcategory%3Dhttp://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis' -H 'prefer:respond-async'", "transactionTime": "2022-08-05T08:52:45.692Z" }

Since the Bulk Data Export is asynchronous, it will need to be queried periodically to determine when it has completed compiling resources for the patients(s) is complete. To perform this, execute the $exportstatus operation.

Example

GET https://localhost:4081/$exportstatus?_id=13d8ce0d-9f96-48d4-96a7-58d0b3dd4e75

Refer to the Bulk Data Export Status documentation for more information on the operation and non-complete statuses.

Once the export returns a completed response, as shown below, the next step is to query and download the actual NDJSON files.

Example

{
    "transactionTime": "2022-08-21T00:00:00Z",
    "request": "https://example.com/fhir/Patient/$export?_type=Patient,Observation",
    "output": [
        {
        "type": "Patient",
        "url": "https://example.com/output/patient_file_1.ndjson"
        },
        {
        "type": "Patient",
        "url": "https://example.com/output/patient_file_2.ndjson"
        },
        {
        "type": "Observation",
        "url": "https://example.com/output/observation_file_1.ndjson"
        }
    ],
    "deleted": [
        {
        "type": "Bundle",
        "url": "https://example.com/output/del_file_1.ndjson"
        }
    ],
    "error": [
        {
        "type": "OperationOutcome",
        "url": "https://example.com/output/err_file_1.ndjson"
      }
    ]
  }

Each output:url in the JSON above represents a downloadable NDJSON file. To download each respective NDJSON file, a GET request can be used to query and retrieve the file.

Example

Accept:application/fhir+ndjson
GET https://localhost:4081/$exportfilerequest/?_id=13d8ce0d-9f96-48d4-96a7-58d0b3dd4e75&filename=contentPatient.ndjson