Skip to content
This repository has been archived by the owner on May 7, 2024. It is now read-only.

Soarian FHIR R4 changes for Overview, R4 Overview and Patient resource #677

Merged
merged 18 commits into from
Sep 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
55ea68d
Soarian FHIR R4 changes for Overview, R4 Overview and Patient resource
slvsridhar Jun 23, 2021
4191284
Modifed for paient resource and overview PR- 677
slvsridhar Sep 9, 2021
18feb4c
Merge remote-tracking branch 'origin/main' into Soarian_FHIR_R4_Patie…
slvsridhar Sep 15, 2021
3544de1
Modified soarian interaction in diff table
slvsridhar Sep 17, 2021
a6f28dc
Solved lint failures and inlcuded _revinclude notes for patient resource
slvsridhar Sep 22, 2021
c51b01c
Added disclaimer in soarian R4 page
slvsridhar Sep 22, 2021
0f09dec
Modifed disclaimer to italic font.
slvsridhar Sep 22, 2021
83a1f7a
Soarian FHIR R4 changes for Overview, R4 Overview and Patient resource
slvsridhar Jun 23, 2021
7e08284
Modifed for paient resource and overview PR- 677
slvsridhar Sep 9, 2021
4c6fd8d
Modified soarian interaction in diff table
slvsridhar Sep 17, 2021
9eca7c6
Solved lint failures and inlcuded _revinclude notes for patient resource
slvsridhar Sep 22, 2021
aba9289
Added disclaimer in soarian R4 page
slvsridhar Sep 22, 2021
06ed05c
Modifed disclaimer to italic font.
slvsridhar Sep 22, 2021
08a6a83
Merge branch 'Soarian_FHIR_R4_Patient_Write' of https://github.com/ce…
slvsridhar Sep 22, 2021
c0138dc
Merge branch 'Soarian_FHIR_R4_Patient_Write' of https://github.com/ce…
slvsridhar Sep 23, 2021
9c37e2c
Sync with Main branch
slvsridhar Sep 23, 2021
7733daf
Reverting the lint syntax errors
slvsridhar Sep 23, 2021
b1819fc
Rubocop autocorrect
slvsridhar Sep 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ layout: overview
</h1>
<p class="intro">Jump right into the API documentation to get started.</p>
<a href="millennium/overview/" class="button">Browse the Millennium documentation</a>
<a href="soarian/dstu2/" class="button">Browse the Soarian documentation</a>
<a href="soarian/overview/" class="button">Browse the Soarian documentation</a>
</div>

<div class="full-width dev-program-callout">
Expand Down
30 changes: 30 additions & 0 deletions content/soarian/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: Overview
layout: soarian/overview
---
# Overview

This document describes the resources that comprise Cerner’s Soarian Clinicals<sup>®</sup> implementation of the Health Level Seven<sup>®</sup> (HL7)<sup>®</sup> International Fast Healthcare Interoperability Resources<sup>®</sup> (FHIR)<sup>®</sup> standard. If you have any problems or requests, post them to our [developer group](https://groups.google.com/forum/#!forum/cerner-fhir-developers).

* TOC
{:toc}

## Supported Versions

Cerner’s Soarian Clinicals<sup>®</sup> implementation currently supports both the R4 First Normative Content (4.0.1) version and DSTU 2 Final (1.0.2) version of the HL7<sup>®</sup> FHIR<sup>®</sup> standard. Cerner’s implementation of the R4 version is ongoing and new resources and actions will be added over time.
Copy link

@sudhir80 sudhir80 Aug 16, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DSTU 2 => Should be DSTU2, a single word, I believe at all places.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DSTU 2 is not a single word in FHIR site so as we discussed going with the same.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine. Thanks.


## Determining Which Version to Use

The best version to use depends on your use case. In general, if the R4 implementation meets all of your requirements, target your development against the R4 version. To determine whether the R4 version meets your requirements, you need to consider supported resources and actions, provider access, and technical requirements. In general, R4 has more capabilities that will not be patched back to DSTU 2.

Cerner’s Soarian Clinicals<sup>®</sup> DSTU 2 implementation does not support access for provider-facing applications. Only the R4 implementation supports provider-facing applications.

Existing DSTU 2 patient-facing applications will eventually need to be migrated to the R4 implementation. For this reason, Cerner strongly recommends that you develop against R4 whenever possible.

## Supported Resources Between Versions

To determine which resources and actions our DSTU 2 and R4 implementations support, browse the Soarian Clinicals<sup>®</sup> FHIR<sup>®</sup> R4 documentation for both DSTU 2 and R4 and compare the capabilities of each version. You can also compare the Conformance (DSTU 2) and CapabilityStatement (R4) endpoints for the list of supported resources and actions.

The following table summarizes the resources and actions that our DSTU 2 and R4 implementations currently support for patient and provider access.

<%= render '/soarian/diff_table.*' %>
451 changes: 451 additions & 0 deletions content/soarian/r4.md

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions content/soarian/r4/base.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Base | R4 API
layout: api
---

<%= render '/soarian/r4/base.*' %>

## Individuals
<%= render '/soarian/r4/base/individuals.*' %>

* [Patient](/soarian/r4/base/individuals/patient)
8 changes: 8 additions & 0 deletions content/soarian/r4/base/individuals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: Individuals | R4 API
layout: api
---

<%= render '/soarian/r4/base/individuals.*' %>

* [Patient](/soarian/r4/base/individuals/patient)
167 changes: 167 additions & 0 deletions content/soarian/r4/base/individuals/patient.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
---
title: Patient | R4 API
---

# Patient

* TOC
{:toc}

## Overview

The Patient resource provides general demographic information about a person receiving health care services from a specific organization. Common demographic fields include patient ID, patient name, gender, date of birth, address, phone, and primary language. Additional concepts returned as extensions and not part of the base resource include race, ethnicity, and birth sex. Soarian Clinicals<sup>®</sup> is a patient-centric application, so many of its other resources include the patient ID in their queries. A person receiving care from multiple organizations may have data available in multiple patient resources in multiple Fast Healthcare Interoperability Resources<sup>®</sup> (FHIR)<sup>®</sup> servers.

Soarian Clinicals<sup>®</sup> supports a read-only Application Programming Interface (API). This API accepts `GET` and `POST` based [search] and and `GET` based [read] interactions. The response represents the most current information about the patient that is charted in Soarian Clinicals<sup>®</sup> at the time of the query.

The search results include the following fields if they are valued:


* [Patient id](https://hl7.org/fhir/R4/resource-definitions.html#Resource.id){:target="_blank"}
* [Patient Identifier](https://hl7.org/fhir/R4/patient-definitions.html#Patient.identifier){:target="_blank"}, only MR, PI and SB values are supported
* [Active](https://hl7.org/fhir/R4/patient-definitions.html#Patient.active){:target="_blank"}
* [Patient name](https://hl7.org/fhir/R4/patient-definitions.html#Patient.name){:target="_blank"}
* [Telecom Information](https://hl7.org/fhir/R4/patient-definitions.html#Patient.telecom){:target="_blank"}, may include phone and email
* [Gender (administrative)](https://hl7.org/fhir/R4/patient-definitions.html#Patient.gender){:target="_blank"}
* [Extensions including birth sex, ethnicity and race](#extensions){:target="_blank"}
* [Date of Birth]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate){:target="_blank"}
* [Address]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.address){:target="_blank"}
* [Communication (preferred language)]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.communication){:target="_blank"}


## Terminology Bindings

<%= terminology_table(:soarian_patient, :r4) %>

## Extensions

* [US Core Race]
* [US Core Ethnicity]
* [US Core Birth Sex]

## Search

Search for Patients that meet specified query parameters:

GET /Patient?:parameters

_Implementation Notes_

* A `422 (unprocessable entity)` HTTP response status code and OperationOutcome are returned when >499 patients qualify for the search criteria. FHIR<sup>®</sup> applications may prompt the user for more specific search criteria to avoid this possibility.

### Authorization Types

<%= authorization_types(provider: true, patient: true, system: true) %>

### Parameters

Name | Required? | Type | Description
----------------------|----------------------------------------------|------------|--------------------------------------------------------------------------
`_id` | This or any other required search parameter | [`token`] | The logical resource ID associated with the resource.
`identifier` | This or any other search parameter, or `_id` | [`token`] | A patient identifier. Only MR, PI, or SB identifiers are supported and therefore searched. Example: `urn:oid:1.1.1.1.1.1`\|`1022228`
`name` | This or any other search parameter, or `_id` | [`string`] | The start of either the family or the given name of the patient. Previous name values are not searchable. Example: `Doe`
`family` | This or any other search parameter, or `_id` | [`string`] | The start of the patient's family name. Previous name values are not searchable. Example: `Doe`
`given` | This or any other search parameter, or `_id` | [`string`] | The start of the patient's given name. Previous name values are not searchable. Example: `Jane`
`birthdate` | This or any other search parameter, or `_id` | [`date`] | The patient's date of birth. Example: `1990-01-01`
`gender` | No | [`token`] | The patient's gender. Example: `male`
`_revinclude` | No | [`_revinclude`] | A request to include any Provenance resource in the bundle that refers to a Patient resource in the search results. Only supported with Provenance.
ashu-bdvt marked this conversation as resolved.
Show resolved Hide resolved

Notes:

* For the Patient user
* A search without any parameter is supported that returns all the Patient resources that the user can access. This is applicable only for authorization_type = patient.
* All other search parameters are supported as either the `_id`, or a combination of `identifier` , `birthdate`, `name`, `family`, or `given` parameters must be provided, while still returning only the Patient resources that the user can access.
* For the Provider user, either the `_id`, or a combination of `identifier` , `birthdate`, `name`, `family`, or `given` parameters must be provided.
* The `gender` parameter may only be provided if at least one of the `identifier` , `birthdate`, `name`, `family`, or `given` parameters is provided.
* The `identifier` parameter supports the `:of-type` modifier and has the format system\|code\|value, where the system and code refer to an `Identifier.type.coding.system` and `.code`, and match if any of the type codes match. All three parts of the format must be present.
* The `name`, `family`, and `given` parameters search for current and previous names.
* The `name`, `family`, and `given` parameters allow search for normalized values as well when these may contain accented characters. For example, **Schlüter** will match **Schlüter** and **Schlueter**, but not **Schluter**
* The `identifier`, `name`, `family`, `given`, and `gender` parameters may be provided exactly once and may have only a single value.
* The `birthdate` parameter
* May be provided once using the `eq` prefix
* May be provided up to twice to imply a date range using one of the following prefixes: `ge`, `le`, `gt`, or `lt`
* Must not be provided with a time component
* The `_revinclude` parameter may be provided once with the value `Provenance:target`. Example: `_revinclude=Provenance:target`
* When `_revinclude` is provided in a request, the OAuth2 token must include the `patient/Provenance.read system/Provenance.read` or `user/Provenance.read` scope as applicable.


### Headers

<%= headers fhir_json: true %>

### Example

#### Request

GET https://fhir-myrecord-sc.cerner.com/r4/2f8f5ec1-b7b8-4be5-ae27-e308284dd9c1/Patient?_id=A879904FD2FE4B2D90C89FDA84E1285F

#### Response

<%= headers status: 200 %>
<%= json(:SOARIAN_R4_SEARCH_BY_ID_ENTRY) %>

Note: The examples provided here are non-normative and replaying them in the public sandbox is not guaranteed to yield the results shown on the site.

### Errors

* The common [errors] and [OperationOutcomes](https://www.hl7.org/fhir/r4/operationoutcome.html) may be returned.
* In addition, a `422 Unprocessable Entity` HTTP response status code and OperationOutcome is returned when >499 patients qualify for the search criteria.

## Retrieve by ID

Return an individual Patient resource by the resource ID:

GET /Patient/:id

### Authorization Types

<%= authorization_types(provider: true, patient: true) %>

### Headers

<%= headers fhir_json: true %>

### Example

#### Request

GET https://fhir-myrecord-sc.cerner.com/r4/2f8f5ec1-b7b8-4be5-ae27-e308284dd9c1/Patient/A879904FD2FE4B2D90C89FDA84E1285F

#### Response

<%= headers status: 200 %>
<%= json(:SOARIAN_R4_READ_BY_ID_ENTRY) %>

Note: The examples provided here are non-normative and replaying them in the public sandbox is not guaranteed to yield the results shown on the site.

### Linking Duplicate Patient Records Example

The **link** element is used to assert that patient resources refer to the same patient. This element is used to support the scenario where a duplicate record is retired; this process is known as a **patient merge** in Soarian Clincials<sup>®</sup>. When the requested patient record has been merged into another record, an inactive Patient entry is returned that has a link to the current Patient entry. Entries for merged, or source, patients are only returned when retrieving the entries directly by ID. Entries for the target patient are returned with all qualifying searches.

The ability to perform patient merge operations is not available through the Cerner Ignite APIs for Soarian Clinicals<sup>®</sup> platform.

#### Request

GET https://fhir-myrecord-sc.cerner.com/r4/2f8f5ec1-b7b8-4be5-ae27-e308284dd9c1/Patient?_id=0A1119CA2414486AAD618F5A2D25556B

#### Response

<%= headers status: 200 %>
<%= json(:SOARIAN_R4_MERGE) %>

Note: The examples provided here are non-normative and replaying them in the public sandbox is not guaranteed to yield the results shown on the site.

### Errors

The common [errors] and [OperationOutcomes](https://www.hl7.org/fhir/r4/operationoutcome.html) may be returned.

[search]: https://www.hl7.org/fhir/http.html#search
[read]: https://www.hl7.org/fhir/http.html#read
[`date`]: https://hl7.org/fhir/R4/search.html#date
[`string`]: https://hl7.org/fhir/R4/search.html#string
[`token`]: https://hl7.org/fhir/R4/search.html#token
[`_revinclude`]: https://www.hl7.org/fhir/search.html#revinclude
[errors]: ../../#client-errors
[OperationOutcomes]: https://hl7.org/fhir/R4/operationoutcome.html
[US Core Race]: https://www.hl7.org/fhir/us/core/StructureDefinition-us-core-race.html
[US Core Ethnicity]: https://www.hl7.org/fhir/us/core/StructureDefinition-us-core-ethnicity.html
[US Core Birth Sex]: https://www.hl7.org/fhir/us/core/StructureDefinition-us-core-birthsex.html
4 changes: 3 additions & 1 deletion layouts/api.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ <h2>Millennium</h2>
<% elsif @item[:solution] == 'soarian' %>
<h2>Soarian</h2>
<ul>
<li><a href="/soarian/dstu2/" class="active">DSTU 2 Final (1.0.2)</a></li>
<li><a href="/soarian/overview/">Overview</a></li>
<li><a href="/soarian/dstu2/" class="active">DSTU 2 Final (1.0.2)</a></li>
<li><a href="/soarian/r4/">R4 First Normative Content (4.0.0)</a></li>
<li><a href="https://groups.google.com/d/forum/cerner-fhir-developers">Support</a></li>
</ul>
<% end %>
Expand Down
3 changes: 2 additions & 1 deletion layouts/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<link href="/css/documentation.css" media="screen" rel="stylesheet" type="text/css">
<link href="/css/pygments.css" media="screen" rel="stylesheet" type="text/css">
<script src="/js/jquery.js" type="text/javascript"></script>
<script src="/js/millennium_diff_table_config.js" type="text/javascript"></script>
<script src="/js/millennium_diff_table_config.js" type="text/javascript"></script>
<script src="/js/millennium_diff_table.js" type="text/javascript"></script>
<script src="/js/documentation.js" type="text/javascript"></script>
<script src="/js/request_button.js" type="text/javascript"></script>
Expand All @@ -23,4 +23,5 @@
ga('create', 'UA-62403415-1', 'auto');
ga('send', 'pageview');
</script>

</head>
2 changes: 1 addition & 1 deletion layouts/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

<ul class="pages">
<li><a href="/millennium/overview/">Millennium</a></li>
<li><a href="/soarian/dstu2/">Soarian</a></li>
<li><a href="/soarian/overview/">Soarian</a></li>
<li><a href="/authorization">Authorization</a></li>
<li><a href="/smart">SMART</a></li>
</ul>
Expand Down
27 changes: 27 additions & 0 deletions layouts/soarian-head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="imagetoolbar" content="false" />
<title><%= @item[:title] %></title>
<%= redirect %>
<link href="/css/reset.css" rel="stylesheet" type="text/css" />
<link href="/css/documentation.css" media="screen" rel="stylesheet" type="text/css">
<link href="/css/pygments.css" media="screen" rel="stylesheet" type="text/css">
<script src="/js/jquery.js" type="text/javascript"></script>
<script src="/js/soarian_diff_table_config.js" type="text/javascript"></script>
<script src="/js/soarian_diff_table.js" type="text/javascript"></script>
<script src="/js/documentation.js" type="text/javascript"></script>
<script src="/js/request_button.js" type="text/javascript"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-62403415-1', 'auto');
ga('send', 'pageview');
</script>

</head>
21 changes: 21 additions & 0 deletions layouts/soarian/diff_table.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div id="soarian-table-div">
<table id="soarian-diff-table">
<thead>
<tr>
<th>DSTU 2 Resource</th>
<th colspan="6">Supported Actions</th>
<th>R4 Resource</th>
ashu-bdvt marked this conversation as resolved.
Show resolved Hide resolved
<th colspan="6">Supported Actions</th>
</tr>
</thead>
</table>
<div id="table-key">
<i class="octicon octicon-file-text"></i> = read <p>|</p>
<i class="octicon octicon-search"></i> = search <p>|</p> * = note
</div>
</div>
<div id="soarian-diff-table-spinner" class="loading-spinner"><div></div><div></div><div></div><div></div></div>
<div class="soarian-failure-message">
Soarian Failed to fetch resource information: If this issue persists, please post to our
<a href="https://groups.google.com/d/forum/cerner-fhir-developers">developer group</a>.
</div>
26 changes: 26 additions & 0 deletions layouts/soarian/overview.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<%= render '/soarian-head.*' %>

<body>
<%= render '/header.*' %>

<div class="sub-nav">
<h2>Soarian</h2>
<ul>
<li><a href="/soarian/overview/" class="active">Overview</a></li>
<li><a href="/soarian/dstu2/">DSTU 2 Final (1.0.2)</a></li>
<li><a href="/soarian/r4/">R4 First Normative Content (4.0.0)</a></li>
<li><a href="https://groups.google.com/d/forum/cerner-fhir-developers">Support</a></li>
</ul>
</div>

<div id="wrapper">
<div class="content">
<%= yield %>
</div>

<%= render "/#{@item[:solution].to_s}/overview_sidebar.*" %>
</div><!-- #wrapper -->

<%= render '/footer.*' %>
</body>
</html>
21 changes: 21 additions & 0 deletions layouts/soarian/overview_sidebar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div id="js-sidebar" class="sidebar-shell">
<div class="expand-collapse">
<a href="#" class="js-expand-all hide">+ Expand All</a>
<a href="#" class="js-collapse-all">- Collapse All</a>
</div>
<div class="js-toggle-list sidebar-module expandable">
<ul>
<li class="js-topic">
<h3><a href="#" class="js-expand-btn collapsed arrow-btn" data-proofer-ignore></a><a href="/soarian/overview/">Overview</a>
</h3>
<ul class="js-guides">
<li><a href="/authorization/">Authorization</a></li>
</ul>
</li>
</ul>
</div> <!-- /sidebar-module -->
<div class="sidebar-module notice">
<p>This website is a <a href="https://github.com/cerner/fhir.cerner.com" target="_blank">public GitHub
repository</a>. Please help us by forking the project and adding to it.</p>
</div>
</div><!-- /sidebar-shell -->
3 changes: 3 additions & 0 deletions layouts/soarian/r4/base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<h1 id="base">Base</h1>

<p>The Base category of HL7<sup>®</sup> FHIR<sup>®</sup> resources includes Individuals, Entities, Workflow, and Management.</p>
3 changes: 3 additions & 0 deletions layouts/soarian/r4/base/individuals.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<p>Individuals resources are used to describe the people that participate in healthcare. This includes patient, practitioners, and others that are related in some way to a patient. This does not include the Person resource, which is used to index a real world person providing a means to identify the same person across different healthcare organizations.</p>

<h3 id="implemented-resources">Implemented Resources</h3>
5 changes: 5 additions & 0 deletions layouts/soarian/r4/individuals.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<h1 id="individuals">Individuals</h1>

<p>Individuals resources are used to describe the people that participate in healthcare. This includes patient, practitioners, and others that are related in some way to a patient. This does not include the Person resource, which is used to index a real world person providing a means to identify the same person across different healthcare organizations.</p>

<h2 id="implemented-resources">Implemented Resources</h2>
Loading