NAV Navbar
Logo cerner
Ruby Shell

Prime Data Ingestion API v1

The Prime Data Ingestion (PDI) service enables uploading, normalizing, and standardizing clinical data from a variety of data source types for use in the Longitudinal Record service and other HealtheIntent services. The PDI service is intended to be used by data contributors who can transform their data into PDI’s supported record types (for example, Condition and Observation). Currently, the PDI service supports only JSON-formatted record types. Each data record that is uploaded using the PDI API must be uniquely identifiable.

URL: https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1

Record Types

Record types are the types of records that can be contributed, or uploaded, to the HealtheIntent platform using the PDI API. The record types for the PDI service closely align with the various data models supported by the HealtheIntent platform. The supported record types (for example, Patient, Observation, Condition, and PatientDocumentReference) are determined by the PDI service.

Retrieve a List of Record Types

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "items": [
    {
      "id": "PATIENT_DOCUMENT_REFERENCE",
      "name": "Patient Document Reference"
    }
  ],
  "totalResults": 1,
  "firstLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types?offset=0&limit=20",
  "lastLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types?offset=0&limit=20"
}

GET /record-types

Retrieves the list of supported record types.

Parameters

Parameter In Type Required Default Description Accepted Values
offset query integer(int32) false 0 The number of results to skip from the beginning of the list of results (typically for the purpose of paging). The minimum offset is 0. There is no maximum offset. -
limit query integer(int32) false 20 The maximum number of results to display per page. The minimum limit is 1. The maximum limit is 100. -

Response Statuses

Status Meaning Description Schema
200 OK The list of record types. RecordTypes
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError

Retrieve a Single Record Type

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "id": "PATIENT_DOCUMENT_REFERENCE",
  "name": "Patient Document Reference"
}

GET /record-types/{recordTypeId}

Retrieves a specific record type by ID.

Parameters

Parameter In Type Required Default Description Accepted Values
recordTypeId path string true N/A The unique ID of the record type. -

Response Statuses

Status Meaning Description Schema
200 OK The record type. RecordType
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Record Type Schemas

Each record type has one to many schemas, which allows schemas to evolve. All contributed records are checked for conformance to a specific record type schema. The supported schemas are determined by the PDI service.

Retrieve a List of Record Type Schemas

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE/schemas', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE/schemas \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "items": [
    {
      "id": "1.0"
    }
  ],
  "totalResults": 1,
  "firstLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types-schemas/PATIENT_DOCUMENT_REFERENCE/schemas?offset=0&limit=20",
  "lastLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types-schemas/PATIENT_DOCUMENT_REFERENCE/schemas?offset=0&limit=20"
}

GET /record-types/{recordTypeId}/schemas

Retrieves the collection of schemas for a specific record type.

Parameters

Parameter In Type Required Default Description Accepted Values
recordTypeId path string true N/A The unique ID of the record type. -
offset query integer(int32) false 0 The number of results to skip from the beginning of the list of results (typically for the purpose of paging). The minimum offset is 0. There is no maximum offset. -
limit query integer(int32) false 20 The maximum number of results to display per page. The minimum limit is 1. The maximum limit is 100. -

Response Statuses

Status Meaning Description Schema
200 OK The collection of schemas. RecordTypeSchemaItems
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Retrieve a Single Record Type Schema

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE/schemas/1.0', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/record-types/PATIENT_DOCUMENT_REFERENCE/schemas/1.0 \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "id": "1.0",
  "schema": "<Base64-Encoded String>"
}

GET /record-types/{recordTypeId}/schemas/{schemaId}

Retrieves a specific record type schema instance.

Parameters

Parameter In Type Required Default Description Accepted Values
schemaId path string true N/A The ID of a specific schema of a record type. -
recordTypeId path string true N/A The unique ID of the record type. -

Response Statuses

Status Meaning Description Schema
200 OK The schema instance. RecordTypeSchema
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Data Sources

A data source is a contributor of data to the HealtheIntent platform. Each contributor must be created as a data source on the platform before it can send data to the platform.

Create a Data Source

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.post('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources', headers: headers, body: {"multiContributor":"FALSE"}.to_json )

print JSON.pretty_generate(result)




# You can also use wget
curl -X POST https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \ \
-H 'Accept: application/json' \
-d {"multiContributor":"FALSE"}

POST /data-sources

Creates a prime data source that is owned by the tenant. A data source’s multiContributor settings cannot be modified after it is created.

Parameters

Parameter In Type Required Default Description Accepted Values
body body postDataSources true N/A No description -

Response Statuses

Status Meaning Description Schema
201 Created Create a Data Source DataSource
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Retrieve a List of Data Sources

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "items": [
    {
      "id": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4",
      "name": "Cerner Demo",
      "multiContributor": "FALSE",
      "description": "Cerner - Demo EMR",
      "tags": {
        "key": "tags",
        "value": "EMR"
      },
      "createdAt": "2020-01-20T02:00:00.000Z",
      "updatedAt": "2020-01-20T02:00:00.000Z"
    }
  ],
  "totalResults": 1,
  "firstLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources?offset=0&limit=20",
  "lastLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources?offset=0&limit=20"
}

GET /data-sources

Retrieves a list of all the data sources that are owned by the tenant and can contribute data records using the PDI service.

Parameters

Parameter In Type Required Default Description Accepted Values
offset query integer(int32) false 0 The number of results to skip from the beginning of the list of results (typically for the purpose of paging). The minimum offset is 0. There is no maximum offset. -
limit query integer(int32) false 20 The maximum number of results to display per page. The minimum limit is 1. The maximum limit is 100. -
name query string false N/A The name of the data source. -

Response Statuses

Status Meaning Description Schema
200 OK The list of data sources. DataSources
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError

Retrieve a Single Data Source

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

GET /data-sources/{dataSourceId}

Retrieves a single prime data source that the tenant owns.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The unique ID of the data source. -

Response Statuses

Status Meaning Description Schema
200 OK Single Prime Data Source DataSource
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Update a Data Source

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.patch('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X PATCH https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

PATCH /data-sources/{dataSourceId}

Updates a prime data source that the tenant owns.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The unique ID of the data source. -
body body patchDataSources true N/A No description -

Response Statuses

Status Meaning Description Schema
204 No Content No Content None
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Data Partitions

Data partitions are the logical partitions of data in HealtheIntent for a data source. Most data that is ingested into the platform is transformed until its shape is normalized and its terminology is standardized. After the data is transformed, it is published in data partitions and ready to be used by other platform services, solutions, and applications.

Create a Single Data Partition

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.post('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X POST https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

Example response

{
  "id": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4",
  "name": "DEMO:EMR",
  "description": "Cerner - Demo EMR",
  "conceptMappingConsumerId": "f81d8106-94b5-4a20-847e-4259b3616b02",
  "createdAt": "2020-01-20T02:00:00.000Z",
  "updatedAt": "2020-01-20T02:00:00.000Z"
}

POST /data-sources/{dataSourceId}/data-partitions

Adds a data partition or create a data partition to be connected to the service.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The unique ID of the data source. -
body body postDataSourcesDatasourceidDataPartitions true N/A No description -

Response Statuses

Status Meaning Description Schema
201 Created Created DataPartition
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Retrieve a List of Prime Data Partitions

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "items": [
    {
      "id": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4",
      "name": "DEMO:EMR",
      "description": "Cerner - Demo EMR",
      "conceptMappingConsumerId": "f81d8106-94b5-4a20-847e-4259b3616b02",
      "createdAt": "2020-01-20T02:00:00.000Z",
      "updatedAt": "2020-01-20T02:00:00.000Z"
    }
  ],
  "totalResults": 1,
  "firstLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/data-partitions?offset=0&limit=20",
  "lastLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/data-partitions?offset=0&limit=20"
}

GET /data-sources/{dataSourceId}/data-partitions

Retrieves a list of all the data partitions that are owned by the tenant and can contribute data records using the PDI service.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The ID of the data source. -
name query string false N/A The displayable name of the data partition. -
offset query integer(int32) false 0 The number of results to skip from the beginning of the list of results (typically for the purpose of paging). The minimum offset is 0. There is no maximum offset. -
limit query integer(int32) false 20 The maximum number of results to display per page. The minimum limit is 1. The maximum limit is 100. -

Response Statuses

Status Meaning Description Schema
200 OK The list of data partitions. DataPartitions
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError

Update a Single Data Partition

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.patch('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions/5b6e6095-1023-46f9-9521-ccf0ae68ab54', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X PATCH https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions/5b6e6095-1023-46f9-9521-ccf0ae68ab54 \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

PATCH /data-sources/{dataSourceId}/data-partitions/{dataPartitionId}

Adds a data partition or create a data partition to be connected to the service.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The unique ID of the data source. -
dataPartitionId path string true N/A The unique ID of the data partition. -
body body patchDataSourcesDatasourceidDataPartitions true N/A No description -

Response Statuses

Status Meaning Description Schema
204 No Content No Content None
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Retrieve a Single Data Partition

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions/5b6e6095-1023-46f9-9521-ccf0ae68ab54', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/0f6e6e66-376f-4e52-a051-5a452db1fd8c/data-partitions/5b6e6095-1023-46f9-9521-ccf0ae68ab54 \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "id": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4",
  "name": "DEMO:EMR",
  "description": "Cerner - Demo EMR",
  "conceptMappingConsumerId": "f81d8106-94b5-4a20-847e-4259b3616b02",
  "createdAt": "2020-01-20T02:00:00.000Z",
  "updatedAt": "2020-01-20T02:00:00.000Z"
}

GET /data-sources/{dataSourceId}/data-partitions/{dataPartitionId}

Retrieves a single data partition that is connected to the service.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The unique ID of the data source. -
dataPartitionId path string true N/A The unique ID of the data partition. -

Response Statuses

Status Meaning Description Schema
200 OK A single data partition DataPartition
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Record Streams

A record stream categorizes and organizes contributed records in a data source. For example, the owner of the data source may want to organize their contributed vital measurements and lab results records separately using record streams, even though they both use the Observation record type. Each record stream must indicate the record type (only one) that will be used to validate the structure of the contributed records.

Add a Record Stream

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.post('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X POST https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

POST /data-sources/{dataSourceId}/record-streams

Adds a record stream to a data source.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The ID of the data source. -
body body postDataSourcesDatasourceidRecordStreams true N/A No description -

Response Statuses

Status Meaning Description Schema
201 Created Created RecordStream
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError
409 Conflict Conflict ConflictError

Retrieve a List of Record Streams

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "items": [
    {
      "id": "0b8edc65-c9e1-4035-9040-9568442ff6b4",
      "name": "Vital Measurements",
      "recordType": {
        "id": "0b8edc65-c9e1-4035-9040-9568442ff6b4"
      },
      "description": "Vital Measurements for Record Stream",
      "createdAt": "2020-02-14T07:14:27.000Z",
      "updatedAt": "2020-02-14T07:15:46.000Z"
    }
  ],
  "totalResults": 1,
  "firstLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams?offset=0&limit=20",
  "lastLink": "https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams?offset=0&limit=20"
}

GET /data-sources/{dataSourceId}/record-streams

Retrieves a list of the defined record streams for a specific data source.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The ID of the data source. -
offset query integer(int32) false 0 The number of results to skip from the beginning of the list of results (typically for the purpose of paging). The minimum offset is 0. There is no maximum offset. -
limit query integer(int32) false 20 The maximum number of results to display per page. The minimum limit is 1. The maximum limit is 100. -
recordTypeId query string false N/A The type of record that the record stream contains. A record stream can contain only a single record type. -
name query string false N/A The displayable name of the record stream. -

Response Statuses

Status Meaning Description Schema
200 OK The collection of record streams. RecordStreams
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Update a Record Stream

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
} 

result = HTTParty.patch('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams/0b8edc65-c9e1-4035-9040-9568442ff6b4', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X PATCH https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams/0b8edc65-c9e1-4035-9040-9568442ff6b4 \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

PATCH /data-sources/{dataSourceId}/record-streams/{id}

Updates the name, description, or name and description of a record stream.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The ID of the data source. -
id path string true N/A The ID of the record stream, provided by the data contributor, that uniquely identifies the record stream in a data source. The record stream ID can contain only alphanumeric characters, underscores, and dashes. -
body body patchDataSourcesDatasourceidRecordStreams true N/A No description -

Response Statuses

Status Meaning Description Schema
204 No Content No Content. None
400 Bad Request Bad Request BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError
409 Conflict Conflict ConflictError

Retrieve a Single Record Stream

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json'
} 

result = HTTParty.get('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams/0b8edc65-c9e1-4035-9040-9568442ff6b4', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X GET https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/record-streams/0b8edc65-c9e1-4035-9040-9568442ff6b4 \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json'

Example response

{
  "id": "0b8edc65-c9e1-4035-9040-9568442ff6b4",
  "name": "Vital Measurements",
  "recordType": {
    "id": "0b8edc65-c9e1-4035-9040-9568442ff6b4"
  },
  "description": "Vital Measurements for Record Stream",
  "createdAt": "2020-02-14T07:14:27.000Z",
  "updatedAt": "2020-02-14T07:15:46.000Z"
}

GET /data-sources/{dataSourceId}/record-streams/{id}

Retrieves a single record stream.

Parameters

Parameter In Type Required Default Description Accepted Values
dataSourceId path string true N/A The ID of the data source. -
id path string true N/A The ID of the record stream, provided by the data contributor, that uniquely identifies the record stream in a data source. The record stream ID can contain only alphanumeric characters, underscores, and dashes. -

Response Statuses

Status Meaning Description Schema
200 OK The record stream for the specified dataSourceId and id values is returned. RecordStream
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError

Contributed Records

Contributed records are records that are sent, or uploaded, to the platform. Each contributed record must be identified by a data source, record stream, record type (which is implied by the record stream), and record type schema.

Upload Records

Example Request:




require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'PDI-RecordStreamId' => {
  "type": "string"
},
  'PDI-RecordTypeSchemaId' => {
  "type": "string"
},
  'PDI-EnableTracking' => {
  "type": "string"
}
} 

result = HTTParty.post('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/contributed-records', headers: headers)

print JSON.pretty_generate(result)




# You can also use wget
curl -X POST https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/contributed-records \
-H 'Authorization: {auth_header}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'PDI-RecordStreamId: [object Object]' \
-H 'PDI-RecordTypeSchemaId: [object Object]' \
-H 'PDI-EnableTracking: [object Object]'

Example response

{
  "contributedRecords": [
    {
      "trackingTicketId": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4"
    }
  ],
  "contributedRecordCount": "1"
}

POST /data-sources/{dataSourceId}/contributed-records

Uploads, or contributes, records for the specified data source and record set. Each contributed record must adhere to the specified record type schema, which must be a schema for the record type configured for the record set. For example, a Diagnoses record set would likely be configured to use the Condition record type, and therefore the record schema must be one of the Condition schemas. The request body is a JSON array in which each element is a Base64-encoded record that conforms to the associated record type schema.

Parameters

Parameter In Type Required Default Description Accepted Values
PDI-RecordStreamId header string true N/A The unique ID of the record stream with which the contributed record is associated. -
PDI-RecordTypeSchemaId header string true N/A The unique ID of the schema of the record type with which the contributed record is associated. -
PDI-EnableTracking header string false N/A If this field is specified with a value of true (case-insensitive), a trackingTicketId value is assigned to each contributed record and returned in the response. The order in the response corresponds to the order of contributed records in the POST request. If this field is not specified, tracking is disabled. -
dataSourceId path string true N/A The ID of the data source. -
body body postDataSourcesDatasourceidContributedRecords true N/A No description -

Response Statuses

Status Meaning Description Schema
200 OK The tracking information for contributed records. ContributedRecordsResponse
400 Bad Request Bad Request. The following reasons are possible:
- failedRecordValidation: A record does not adhere to the provided record type schema.
- invalidRecordJson: The JSON that contains the encoded records is malformed or could not be read.
- invalidOperation: Not a valid operation.
- invalidOperation: Can’t perform a WRITE operation for an empty payload
BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError
413 Payload Too Large Payload Too Large PayloadTooLargeError

Upload a Record With an Attachment

Example Request:


require 'httparty' # Using HTTParty 0.16.2
require 'json'

headers = {
  'Authorization' => '<auth_header>',
  'Accept' => 'application/json',
  'PDI-RecordStreamId' => {
  "type": "string"
},
  'PDI-RecordTypeSchemaId' => {
  "type": "string"
},
  'PDI-EnableTracking' => {
  "type": "string"
}
} 

result = HTTParty.post('https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/contributed-records-with-attachments', headers: headers)

print JSON.pretty_generate(result)


# You can also use wget
curl -X POST https://cernerdemo.api.us-1.healtheintent.com/prime-data-ingestion/v1/data-sources/f3bc39e9-3efc-4709-95f3-5c153fa8bec4/contributed-records-with-attachments \
-H 'Authorization: {auth_header}' \
-H 'Accept: application/json' \
-H 'PDI-RecordStreamId: [object Object]' \
-H 'PDI-RecordTypeSchemaId: [object Object]' \
-H 'PDI-EnableTracking: [object Object]'

Example response

{
  "contributedRecords": [
    {
      "trackingTicketId": "f3bc39e9-3efc-4709-95f3-5c153fa8bec4"
    }
  ],
  "contributedRecordCount": "1"
}

POST /data-sources/{dataSourceId}/contributed-records-with-attachments

Uploads a record for the specified data source and record set with content attachments. This resource uses a multipart/related request to upload the contributed record (for example, a Document Reference record) plus one to many attachments (for example, .PDF documents, .RTF documents, or .JPEG images). The contributed record must be included in the first part of the multipart request body and adhere to the specified record type schema.The schema must be a schema for the record type configured for the record set. For example, a Lab Micro Reports record set would likely be configured to use the Patient Document Reference record type, and therefore the record schema must be one of the Patient Document Reference schemas. The additional parts in the request would contain the content referenced by the attachments in the contributed record. See the RTF 2387 page on the Internet Engineering Task Force (IETF) website for more information about the multipart/related request.

Parameters

Parameter In Type Required Default Description Accepted Values
PDI-RecordStreamId header string true N/A The unique ID of the record stream with which the contributed record is associated. -
PDI-RecordTypeSchemaId header string true N/A The unique ID of the schema of the record type with which the contributed record is associated. -
PDI-EnableTracking header string false N/A If this field is specified with a value of true (case-insensitive), a trackingTicketId value is assigned to each contributed record and returned in the response. The order in the response corresponds to the order of contributed records in the POST request. If this field is not specified, tracking is disabled. -
dataSourceId path string true N/A The ID of the data source. -

Response Statuses

Status Meaning Description Schema
200 OK The tracking information for contributed records with attachments. ContributedRecordsResponse
400 Bad Request Bad Request. The following reasons are possible:
- failedRecordValidation: A record does not adhere to the provided record type schema.
- invalidRecordJson: The JSON that contains the encoded records is malformed or could not be read.
- invalidOperation: Not a valid operation.
- invalidOperation: Can’t perform a WRITE operation for an empty payload
- missingMimePart: The request does not contain exactly one record and at least one binary attachment.
- invalidMimePart: The request is not a well-formed multipart/related request. The error message should have details on how the request is malformed.
BadRequestError
401 Unauthorized Unauthorized UnauthorizedError
403 Forbidden Forbidden ForbiddenError
404 Not Found Not Found NotFoundError
413 Payload Too Large Payload Too Large PayloadTooLargeError

Schema Definitions

RecordTypes

Name Type Required Description Accepted Values
items [RecordType] true An array containing the current page of results. -
totalResults integer(int32) false The total number of results for the specified parameters. -
firstLink string true The first page of results. -
lastLink string false The last page of results. -
prevLink string false The previous page of results. -
nextLink string false The next page of results. -

RecordType

Name Type Required Description Accepted Values
id string true The unique ID of the record type. -
name string true The human-readable name of the record type. -

UnauthorizedError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [UnauthorizedErrorErrorDetail] false A list of additional error details. -

ErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

UnauthorizedErrorErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

ForbiddenError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [ForbiddenErrorDetail] false A list of additional error details. -

ForbiddenErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

BadRequestError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [BadRequestErrorDetail] false A list of additional error details. -

BadRequestErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

NotFoundError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [NotFoundErrorDetail] false A list of additional error details. -

NotFoundErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

RecordTypeSchemaItems

Name Type Required Description Accepted Values
items [RecordTypeSchemaItem] true An array containing the current page of results. -
totalResults integer(int32) false The total number of results for the specified parameters. -
firstLink string true The first page of results. -
lastLink string false The last page of results. -
prevLink string false The previous page of results. -
nextLink string false The next page of results. -

RecordTypeSchemaItem

Name Type Required Description Accepted Values
id string true The ID of a specific schema of a record type. -

RecordTypeSchema

Name Type Required Description Accepted Values
id string true The ID of a specific schema of a record type. -
schema string true A Base64-encoded JSON schema to which records of this type must adhere. -

Tags

Name Type Required Description Accepted Values
key string true The key of the tag. -
value string true The value of the tag. -

postDataSources

Name Type Required Description Accepted Values
name string true The name of the data source. -
description string false The description of the data source. -
multiContributor boolean false Indicates whether the contributed records from this data source originate from a single or multiple contributors. The default is false. -
tags [Tags] false [object Object] -

DataSource

Name Type Required Description Accepted Values
id string true The ID of the data source. -
name string false The name of the data source. -
multiContributor boolean false Indicates whether the contributed records from this data source originate from a single or multiple contributors. The default is false. -
description string false The description of the data source. -
tags [Tags] false No description -
createdAt string false The date and time when the data source was created. -
updatedAt string false The date and time when the data source was updated. -

DataSources

Name Type Required Description Accepted Values
items [DataSource] true An array containing the current page of results. -
totalResults integer(int32) false The total number of results for the specified parameters. -
firstLink string true The first page of results. -
lastLink string false The last page of results. -
prevLink string false The previous page of results. -
nextLink string false The next page of results. -

patchDataSources

Name Type Required Description Accepted Values
name string false The name of the data source. -
description string false The description of the data source. -
tags [Tags] false [object Object] -

postDataSourcesDatasourceidRecordStreams

Name Type Required Description Accepted Values
name string true The displayable name of the record stream. -
recordTypeId string true The type of record that the record stream contains. A record stream can contain only a single record type. -
description string false The description of the record stream. -

RecordStream

Name Type Required Description Accepted Values
id string true The ID of the record stream, provided by the data contributor, that uniquely identifies the record stream in a data source. The record stream ID can contain only alphanumeric characters, underscores, and dashes. -
name string true The displayable name of the record stream. -
recordType string true The type of record that the record stream contains. A record stream can contain only a single record type. -
description string false The description of the record stream. -
createdAt string(date-time) true The date and time when the record stream was created. -
updatedAt string(date-time) true The date and time when the record stream was most recently updated. -

ConflictError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [ConflictErrorDetail] false A list of additional error details. -

ConflictErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

RecordStreams

Name Type Required Description Accepted Values
items [RecordStream] true An array containing the current page of results. -
totalResults integer(int32) false The total number of results for the specified parameters. -
firstLink string true The first page of results. -
lastLink string false The last page of results. -
prevLink string false The previous page of results. -
nextLink string false The next page of results. -

patchDataSourcesDatasourceidRecordStreams

Name Type Required Description Accepted Values
name string false The displayable name of the record stream. -
description string false The description of the record stream. -

ContributedRecord

Name Type Required Description Accepted Values
operation string false The operation to apply to the contributed record. The possible values are WRITE and DELETE. If this field is omitted, the default WRITE operation is used. -
version integer(int64) true The most recent version of a contributed record. -
resourceId string true The unique ID of the resource record that is contributed, which identifies it among all the contributed records of the specified data source record. -
value string true The Base64-encoded representation of the JSON contributed record payload that is required for any WRITE operation. -

postDataSourcesDatasourceidContributedRecords

Name Type Required Description Accepted Values
records ContributedRecord true The collection of Contributed Records to publish. -

ContributedRecordsResponse

Name Type Required Description Accepted Values
contributedRecords [ContributedRecordsResponseItem] false No description -
contributedRecordCount string true The number of contributed records. -

ContributedRecordsResponseItem

Name Type Required Description Accepted Values
trackingTicketId string false The ID of the ticket that can be used for tracking the uploaded contributed record. Present if tracking is enabled. -

PayloadTooLargeError

Name Type Required Description Accepted Values
code integer(int32) true The HTTP response status code that represents the error. -
message string true A human-readable description of the error. -
errorDetails [PayloadTooLargeErrorErrorDetail] false A list of additional error details. -

PayloadTooLargeErrorErrorDetail

Name Type Required Description Accepted Values
domain string false A subsystem or context where an error occurred. -
reason string false A codified value that represents the specific error that caused the current error status. -
message string false A human-readable description of an error. -
locationType string false The location or type of the field that caused an error. query, header, path, formData, body
location string false The name of the field that caused an error. -

postDataSourcesDatasourceidDataPartitions

Name Type Required Description Accepted Values
name string true The displayable name of the data partition. -
description string false The description of the data partition. -

DataPartition

Name Type Required Description Accepted Values
id string true The ID of the data partition. -
name string true The displayable name of the data partition. -
description string false The description of the data partition. -
conceptMappingConsumerId string false The unique concept mapping ID of the consumer that is used to search for the mapping. -
createdAt string(date-time) true The date and time when the data partition was created. -
updatedAt string(date-time) true The date and time when the date partition was updated. -

DataPartitions

Name Type Required Description Accepted Values
items [DataPartition] true An array containing the current page of results. -
totalResults integer(int32) false The total number of results for the specified parameters. -
firstLink string true The first page of results. -
lastLink string false The last page of results. -
prevLink string false The previous page of results. -
nextLink string false The next page of results. -

patchDataSourcesDatasourceidDataPartitions

Name Type Required Description Accepted Values
name string false The displayable name of the data partition. -
description string false The description of the data partition. -