Introduction
The Nextech Select APIs provide secure access to patient data through a RESTful implementation based on the R4 (4.0.1) version of the FHIR® standard, and are protected by the OAuth 2.0 standard. All API requests are performed over HTTPS, and must use TLS 1.2.
Available API functionality:
Before you can start using our APIs, you must go through our registration process. Continue to the Getting Started section for more information on the different authorization models, and their respective registration processes.
Getting Started
All API requests are performed over HTTPS, and must use TLS 1.2. Although the FHIR® standard supports both JSON and XML, this API currently only supports JSON. Therefore any type explicitly defined in the request's Accept header will be ignored.
Before you can access the Nextech API you must have the proper credentials for authorization. These credentials will be provided to you by your Nextech representative, and vary depending on how you wish to integrate with the Nextech API. There are two different authorization models available for accessing the Nextech API: SMART App authorization, and partner authorization. See each linked authorization section for more information on each, including how to register your application with the Nextech API and acquire the necessary credentials.
Base API Endpoint
https://select.nextech-api.com/api/r4
API Limitations
- Users of the Nextech API are restricted to a rate limit of 20 requests per second per endpoint
- Nextech is not responsible for the development or maintenance of any third-party application
Rate Limiting
Rate limiting of the API is primarily on a per-user, per-endpoint basis. The default rate limit of 20 requests per second per endpoint. When a user exceeds the rate limit for a given API endpoint, the API will reject the request and return a HTTP 429 “Too Many Requests” response code. The API rate limit is subjet to change.
Handling 429 response codes
If your API user exceeds the rate limit, you will receive a HTTP 429 response code. We advise to design to handle these requests with Exponential backoff.
Best practices to avoid Rate Limiting
- The API is intended for on-demand requests for user interaction in real-time, try to avoid synchronizing data.
- Requests should be staggered as much as possible to avoid bursts of high traffic volume.
- Cache your own data when you need to store specialized values or rapidly review very large data sets.
- Query with _lastUpdated search parameters to avoid re-querying unmodified data.
- If you need to synchronize data, it is best to do so during non-peak business hours. Which vary on a per practice basis.
Using Postman
You can use Postman to make a simple request to the metadata endpoint:
GET https://select.nextech-api.com/api/r4/metadataEach
rest.resource member in the metadata response contains information about all FHIR resources that are supported, along with the supported interactions and search parameters for each resource.
Searching
Searches may be performed via HTTPS calls to the API where supported.
A search is executed by performing a GET operation in the RESTful framework
GET https://select.nextech-api.com/api/r4/[type]?[field1][:modifier1]=[value1]&[field2][:modifier2]=[value2]...
where [type] refers to a resource such as Patient or Immunization followed by one or more query filters and optional modifiers.
- Matching is always case-insensitive and always ignores whitespace before and after the data.
- The default search attempts to match with just the start of the data.
Multiple Values on One Field
To search for a field that meets at least one of several values, each value should be specified and separated by a comma.
Example: Get patients who live in several nearby cities
GET https://select.nextech-api.com/api/r4/Patient?address-postalcode=33609,33625,33647
Multiple Fields
To search for multiple fields that all must meet certain criteria, each field should be specified and separated by an ampersand.
Example: Search for encounters for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' that took place between and including 1/1/2022 through 11/14/2022
GET https://select.nextech-api.com/api/r4/Encounter?patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
Modifiers
A modifier defines how a search match should be performed for a field. A modifier must appear after the field name with a preceeding colon followed by the modifier name.
| Modifier | Description |
|---|---|
| exact | The value must match the data exactly |
| contains | The data must contain the value |
Example: Get all patients whose last name is Smith
GET https://select.nextech-api.com/api/r4/Patient?family:exact=Smith
Example: Get all patients whose last name contains the text "mit"
GET https://select.nextech-api.com/api/r4/Patient?family:contains=mit
Operators
Numeric and date values can be combined with operators to search on ranges of values. The following operators are supported:
| Operator | Description |
|---|---|
| gt | Greater Than |
| ge | Greater Than or Equal to |
| lt | Less Than |
| le | Less Than or Equal to |
| eq | Equals |
| ne | Not Equal to |
Example: Get the patients with chart numbers between and including 100 and 200
GET https://select.nextech-api.com/api/Patient/r4?identifier=ge100&identifier=le200
Example: Search for immunizations for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' administered between and including 1/1/2022 through 11/14/2022
GET https://select.nextech-api.com/api/r4/Immunization?patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
Search Parameter Types
String
When matching a simple text string with data, the match is always case-insensitive and always ignores whitespace before and after the data. The default search attempts to match just the start of the data, and you may use a modifier to force an exact match or a match where the data contains the string.
Example: Get all patients whose last name begins with Smith
GET https://select.nextech-api.com/api/r4/Patient?family=Smith
Number
By default, exact matches are performed in numeric searches. You may use operators to specify a numeric range.
Example: Get the patient with chart number 3442
GET https://select.nextech-api.com/api/r4/Patient?identifier=3442
Date
By default, exact matches are performed in date searches. You may use operators to specify a date range.
Example: Get immunizations for the month of October 2022
GET https://select.nextech-api.com/api/r4/Immunization?date=ge2022-10-01&date=lt2022-11-01
Human Name
Some resources have abstract fields which contain a first name, last name, prefix and suffix. When searching on names, each of those fields are searched individually. The way those fields are matched are consistent with how String searches work, and modifiers may be used to change how the matching works.
Example: Get the patients whose first name, last name, prefix or suffix begins with Doe
GET https://select.nextech-api.com/api/r4/Patient?name=doe
Address
Some resources have abstract fields which contain an Address 1, Address 2, City, State and Postal Code field. When searching on address, each of these fields are searched individually. The way those fields are matched are consistent with how String searches work, and modifiers may be used to change how the matching works.
Example: Get the patients whose Address 1, Address 2, City, State or Zip code begins with 1500
GET https://select.nextech-api.com/api/r4/Patient?address=1500
Writing
Currently, only creating a document via a POST https://select.nextech-api.com/api/r4/DocumentReference call is supported.
Pagination
When a search results in multiple matches, the first ten matches ordered by entered date are returned by default. Included in the result are links to the first set of matches, the following set of matches, the previous set of matches and the last set of matches.
You may overide the number of matches returned, up to fifty, by including _count={number} in your search.
GET https://select.nextech-api.com/api/r4/Patient?_count=25
Response Codes
The Nextech Select APIs use the standard HTTP response codes to indicate success or failure of an API request.
| Code | Description |
|---|---|
| 200 | OK - Successful request |
| 400 | Bad Request - The request is missing information or is malformed |
| 401 | Unauthorized - The request lacks valid authentication credentials |
| 403 | Forbidden - The request is valid, but the server is refusing action |
| 404 | Not Found - The requested resource cannot be found |
| 408 | Request Timeout - Client did not send a request in the time the server was expecting |
| 422 | Unprocessable Entity - Unable to process the contained instructions |
| 429 | Too Many Requests - The user has sent too many requests in a given amount of time |
| 500 | Internal Server Error - We had a problem with our server |
| 501 | Not Implemented Error - Requested implementation is not available |
| 502 | Bad Gateway - Communication has been disrupted |
| 523 | Authentication Fault - Unexpected exception in regards to authentication |
Exception Handling
- Exceptions are logged and monitored by the Nextech staff.
- Any request related exceptions will be returned to the user with the appropriate 4xx/5xx code as noted above.
- Any unexpected exceptions will result in a 500 error response and indicate there is an issue with the API and/or connected services.
Remarks
Some resources contain a Remarks section at the end of its documentation page, which contains details on common questions and solutions for that resource.
API Import and Management Guidance
This section describes how to import and manage the Nextech Partner API using Azure API Management (Azure APIM).
OpenAPI Specifications
Two OpenAPI 3.0.3 specification files are available for direct download:
| File | API Version | Base URL | Operations |
|---|---|---|---|
| nextech-partner-api-stu3.openapi.json | FHIR STU3 | https://select.nextech-api.com/api |
47 |
| nextech-partner-api-r4.openapi.json | FHIR R4 | https://select.nextech-api.com/api/r4 |
80 |
Intended OpenAPI Version
Both specifications use OpenAPI 3.0.3. OpenAPI 3.1.x is not used because Azure API Management does not fully support it as of 2024. OpenAPI 2.0 (Swagger) was considered but 3.0.3 provides better support for securitySchemes, multiple auth requirements, and header-based API keys.
Importing into Azure API Management
Import Steps
- In the Azure Portal, navigate to your APIM instance.
- Select APIs → Add API → OpenAPI.
- Upload or paste the URL to the desired spec file (STU3 or R4).
- Set the API URL suffix (e.g.,
partner-stu3orpartner-r4). - Configure the product and subscription settings.
Authentication Configuration
All partner endpoints require two credentials, both of which must be configured in APIM:
| Credential | Type | Header Name | Notes |
|---|---|---|---|
| Bearer Token | OAuth2 (Resource Owner Credentials) | Authorization |
Token endpoint: https://login.microsoftonline.com/nextech-api.com/oauth2/token |
| Practice ID | API Key | nx-practice-id |
Provided by Nextech during partner registration |
Recommended APIM policy: Use an inbound set-header policy to inject the nx-practice-id from a named value or subscription property, and use the validate-jwt or oauth2-token policy to handle Bearer token acquisition and forwarding.
Named Values
Configure these as Named Values in APIM:
- nextech-token-endpoint → https://login.microsoftonline.com/nextech-api.com/oauth2/token
- nextech-api-resource → https://select.nextech-api.com/api
- nextech-practice-id → (per-tenant value, store as Secret)
Known Constraints and Intentional Omissions
Omitted from Specs
- SMART on FHIR authorization flow — The full SMART App authorization flow (authorization code grant for patient-facing apps) is documented in
_smartAppAuthorization.mdbut is not modeled in the partner OpenAPI specs. Partner integrations use resource owner credentials, not SMART. - FHIR
_include/_revincludefull matrix — Only_revinclude=Provenance:target(supported on several R4 resources) is modeled as a query parameter. Full_includechaining is not modeled as it is not systematically supported. - FHIR search modifiers in path syntax — Modifiers like
:containsand:exactare documented in prose but not expressed as OpenAPI parameter variants, as APIM does not support colon-delimited parameter names natively. - FHIR prefix operators on string params — Date/numeric prefix operators (
gt,ge,lt,le,eq,ne) are documented in descriptions but the parameters are typed asstringrather than attempting to model FHIR prefix semantics in JSON Schema.
Azure APIM Constraints Applied
nullable: true— Not used (unsupported in APIM's OpenAPI 3.0 parser); fields that may be absent are simply omitted from required arrays.discriminator,links,callbacks— Not used.oneOf/anyOf/allOf— Avoided in all schema definitions; schemas are flat objects.exclusiveMinimum/exclusiveMaximumas booleans — Not used (OAS 3.1 only).- Single
serversentry — Each spec has exactly one server URL. - POST
/_searchendpoints — Useapplication/x-www-form-urlencodedrequest body as documented by the API; APIM handles form-encoded bodies natively.
BulkExport Async Pattern (R4 only)
Bulk export endpoints (/Patient/$export, /Group/{groupId}/$export, /$export) return 202 Accepted with a Content-Location header pointing to the polling URL. Configure APIM with an extended backend timeout (minimum 30 seconds) for the polling endpoint (GET /Export/{exportJobId}).
Assumptions
- Partner auth is the primary integration model. All endpoints are modeled with
bearerAuth + practiceId. SMART on FHIR is excluded from these specs. - STU3 and R4 are separate imports. They have different base URLs and endpoint surfaces; they should be imported as two separate APIs in APIM.
- FHIR resource schemas are simplified. Full HL7 FHIR JSON schemas are very large and contain recursive structures incompatible with APIM. The schemas in these specs model the key fields documented by Nextech, not the complete FHIR spec.
- Rate limiting is handled externally. The 20 req/sec/endpoint limit should be enforced via APIM rate-limit policies rather than relying on the backend 429 response alone.
- nx-practice-id is tenant-scoped. Each practice has a unique ID; APIM product/subscription configuration should map subscribers to their practice ID via policy or Named Values.
Partner Authorization
Partner Authorization Overview
Nextech's implementation of the FHIR® standard is protected by the OAuth 2.0 standard for authenticating requests. All API requests are authenticated by passing a Bearer token in the Authorization Header, which can be obtained via your Nextech-provided credentials (see the "Registration" section below).
Required Headers
The following values are required in the header for every request:
| Name | Description | Required? |
|---|---|---|
| Authorization | Every request requires a Bearer token Bearer {access_token} |
Yes |
| nx-practice-id | The unique identifier for a practice | Yes |
Registration
Before you can start using the Nextech API, you must go through our registration process. If you're interested in API access for your practice, please contact us here. Upon completion of the registration process, Nextech will provide you with credentials that are necessary for proper authorization with the Nextech API. These credentials will expire on your first login and must be reset through Microsoft here.
Request Access Token
Access tokens are used to make API requests on behalf of a user. These tokens are short-lived (1 hour by default) but should be kept confidential in transit and in storage. A access_token and refresh_token pair is issued when requesting an access token.
HTTP Request
POST https://login.microsoftonline.com/nextech-api.com/oauth2/token
| Parameter | Description |
|---|---|
| grant_type | Use password (Resource owner credentials grant) |
| client_id | Application ID |
| username | Resource owner username |
Refresh Access Token
Refresh tokens are used to renew an expired access token without providing user credentials. A access_token and refresh_token pair is issued when requesting an access token using the resource owner credentials grant. A new pair is also generated when using the refresh_token grant type.
HTTP Request
POST https://login.microsoftonline.com/nextech-api.com/oauth2/token
| Parameter | Description |
|---|---|
| grant_type | Always refresh_token |
| client_id | Application ID |
| refresh_token | A valid refresh token |
Response Parameters
| Parameter | Description |
|---|---|
| token_type | Always Bearer |
| scope | Always user_impersonation |
| expires_in | The lifetime of the access token, in seconds. Default 3600 |
| access_token | The bearer token used in the Authorization header for subsquent requests |
| refresh_token | A long-lived token (14 days) used to renew expired access tokens without providing user credentials |
Authorization With Postman
Postman makes it easy to acquire OAuth 2.0 access tokens. Use the information listed below for obtaining a token via the authorization_code grant type. When requesting a new token, you will be redirected to the Auth URL listed below where you can enter your user credentials to authenticate.
| Field | Value |
|---|---|
| Auth URL | https://login.microsoftonline.com/nextech-api.com/oauth2/authorize?resource=https%3A%2F%2Fselect.nextech-api.com%2Fapi |
| Access Token URL | https://login.microsoftonline.com/nextech-api.com/oauth2/token |
| Callback URL | https://www.getpostman.com/oauth2/callback |
| Client ID | Your application ID |
| Grant Type | Authorization Code |
| Client Authentication | Send client credentials in body |
SMART App Authorization
SMART on FHIR Technology Overview
SMART on FHIR Authorization Overview
SMART apps are able to access through SMART on FHIR authorization standards.
- For an individual patient or practitioner's data, the app can follow the SMART App Launch 1.0.0 specification or SMART App Launch 2.0.0 specification.
- For the information from an entire practice via background system apps, authorization is granted via the SMART Backend Services Authorization (STU 1.0.1) specification.
- Additionally, if a System-level app needs to access Bulk FHIR export functionality, follow the client-specific guidance in the FHIR Bulk Data Access (Flat FHIR, STU 1.0.1) specification specification and the System apps section of this page's documentation for guidance.
Registration
In order to create a SMART app that can access FHIR resources from the Nextech API, the app must first be registered with Nextech, and issued required authentication information. Visit the app registration form to submit your request. There are a few different pieces of information that will need to be provided to Nextech upon app registration, which vary depending on the SMART app's use case:
- The name of the application
- If the app is a public or confidential client.
- A list of Redirect URIs the user is allowed to be redirected back to following authentication.
- This is not required for SMART Backend Services.
- Which of the following types of apps is being registered
- A patient app
- A practitioner app operating solely in a practitioner context
- A practitioner app operating solely in a patient context
- A practitioner app operating in both a practitioner and a patient context
- A secure SMART Backend Service with no user interaction
- The app must be confidential if it is a SMART Backend Service
- If the app is a practitioner app the following must also be provided:
- A "Launch URL" (see the SMART App Launch Framework documentation for more details)
- An EHR Launch Description that will be displayed in the Nextech EHR UI for practice staff use.
- If the app is browser-based the following must also be provided:
- The allowed origin address that the app will make calls to the Nextech API from for CORS
- If the app is a backend service the following must also be provided:
- A TLS 1.2 protected URL to the public JWK Set utilized by the app for JWT (JSON Web Key) credential signing must be provided. See the SMART Backend Services: Authorization Guide documentation for more details.
- The Portal Practice ID of the practice the client will communicate with.
Public and Confidential Clients
If the app is capable of securely storing a secret, it is considered to be a confidential client, and will be issued a client secret, along with a client ID, after the Nextech app registration process has completed. Both of these must be used to authenticate with the Nextech authorization server. NOTE: This secret value will only be received once: Make sure the Client Secret is securely stored and maintained; Nextech will not be able to provide this secret value again once registration has completed.
If the app is not capable of securely storing a secret, then it is considered to be a public client, and will only be issued a client ID after the Nextech app registration process has completed. NOTE: Because Nextech requires the use of PKCE (see the "PKCE" section of this documentation below for more details), native apps may store refresh tokens, despite being "public" clients. Such apps must properly secure such refresh tokens.
Examples of confidential clients include:
- Web apps where a secure backend server exists, and this server is what is used handle the code exchange with the Nextech authorization server
- Mobile apps where a secure backend server exists, and this server is what is used handle the code exchange with the Nextech authorization server
Examples of public clients include:
- Native mobile apps where the app is installed on a user's device and does not have a separate secure backend server (aside from the FHIR server that it calls into). If a client secret were stored on a device like this, a malicious user could theoretically decompile the app and retrieve it
- Single page web apps. Users have access to the source code of such an app, so a client secret cannot be securely stored
Supported SMART on FHIR app types
There are three different types of SMART apps that Nextech supports for communicating with the Nextech API:
Patient-facing apps
SMART apps of this type are intended for use by a single patient, and require that the patient (and their associated practice) be setup with a myPatientVisit patient portal user account. Once setup, patient apps must follow the standlone launch (1.0.0) sequence, as defined by the SMART app framework specification, which uses the authorization code flow (described further below).
Patient-facing apps must request, at a minimum, the below scopes in their authentication request to the Nextech authorization server, in addition to whatever other access scopes are required by the application:
openidlaunch/patient
Practitioner-facing apps
SMART apps of this type are for use by a practitioner within a practice, and can be allowed to access all patient information in the practice, or can instead be focused on a single patient at a time. The practice that the practitioner is associated with must be setup with myPatientVisit. Once setup, practitioner apps may follow either the standlone launch sequence (1.0.0) or the EHR launch sequence (1.0.0) as defined by the SMART app framework specification, both of which use the authorization code flow (described further below).
For practitioner apps following the EHR launch sequence, the app that resides at the launch URL provided to Nextech upon client registration must use the provided iss URL parameter, which should always point to the Nextech API URL ( https://select.nextech-api.com/api/r4) to query either the Nextech API 's metadata endpoint (https://select.nextech-api.com/api/r4/metadata) or SMART configuration endpoint (https://select.nextech-api.com/api/r4/.well-known/smart-configuration), both of which contain in their responses OAuth authorize and token endpoint URLs for use in requesting authorization to access the Nextech API via the Nextech authorization server.
Practitioner-facing apps must request, at a minimum, the below scopes in their authorization request to the Nextech authorization server, in addition to whatever other access scopes are required by the application:
openidlaunch/patient(if doing a standalone launch that requires patient context)launch(if doing an EHR launch with patient context already provided as a URL parameter to the app's registered launch URL)
Authorization code flow
The authorization code workflow, which must be used by both patient- and practitioner-facing SMART apps, follows the below steps, and must use PKCE with a SHA-256 code challenge hashing scheme :
Step 1. The SMART app redirects the user to the Authorization Server (or in the case of a native application, opens a web browser) at a URL similar to the following:
https://sts.mypatientvisit.com/connect/authorize?aud=https://select.nextech-api.com/api/r4&response_type=code&client_id={appClientID}&scope=openid%20offline_access%20fhirUser%20launch%2Fpatient%20patient%2FAllergyIntolerance.read&redirect_uri=https%3A%2F%2FmySmartApp.com%2Fcallback&code_challenge={sha256HashOfRandomString}0&code_challenge_method=S256&state={someUnpredictableValue}
URL parameter notes:
| Name | Description |
|---|---|
| aud | This is the base URL to the Nextech API that the app is requesting access to pull FHIR resources from, and will always be https://select.nextech-api.com/api/r4 |
| response_type | This is always set to code for the authorization flow |
| client_id | This is the unique identifier for the SMART application, issued by Nextech |
| scope | indicates the space-delimited set of scopes that the SMART app is requesting |
| redirect_uri | This is the URI that belongs to the SMART application, which the app user will be redirected to, once the authorization flow completes |
| code_challenge | This is the Base64-encoded SHA-256 hash of the random string generated for the request (as part of PKCE) |
| code_challenge_method | This should always be S256, to indicate the hashing method of the code_challenge value that is supplied, for use with PKCE |
| state | An unpredictable value with at least 122 bits of entropy (e.g., a properly configured random UUID is suitable) that is tied to the user's current session, and can be verified at the end of the authorization code flow to make sure that no replay attacks have occurred |
Step 2: The Nextech authorization server presents the user with a login screen. For patient-facing SMART applications, patients will need to sign in using their myPatientVisit user account, select a patient, and then consent to the scopes that they want to allow the app to use to request information on their behalf. For practitioner-facing SMART applications, the practitioner will be prompted to log in using their Nextech software's user credentials (and, if the launch/patient scope is requested for a standalone launch sequence, select a patient context to use for the application), and then consent to the scopes that they want to allow the app to use to request information on their behalf.
Step 3: The Nextech authorization server redirects the user back the the redirect_uri that was provided in step 1, and adds a code parameter onto the URL, which is a temporary authorization code provided by the Nextech authorization server that the SMART app now must exchange in order to get a back an access token that can be used to access the Nextech API's FHIR resources. Additionally, the state parameter should be verified to be the same state token provided in the request in step 1. Example:
https://mySmartApp.com/callback?code=aded553gr3g7dggakG&state={someUnpredictableValue}
Step 4: The SMART app now must call the Nextech authorization server to exchange its authorization code for an access token, which it must do via a request like below:
POST /connect/token Content-Type: application/x-www-form-urlencoded Authorization: Basic [client ID and secret]client_id={appClientID}&grant_type=authorization_code&code=aded553gr3g7dggakG&redirect_uri=https://mySmartApp.com/callback&scope=openid%20offline_access%20fhirUser%20launch%2Fpatient%20patient%2FAllergyIntolerance.read&aud=https://select.nextech-api.com/api/r4&code_verifier={someRandomString}
Header notes:
| Name | Description |
|---|---|
| Content-Type | must be set to application/x-www-form-urlencoded |
| Authorization | This header is optional, and must only be used if the SMART app client is a confidential client (i.e. it has a client secret configured that it is capable of securely storing). This header uses Basic auth, which will have the string Basic, followed by a space, followed by the Base-64 encoding of the string in the form [client ID]:[client secret]. |
Parameter notes:
| Name | Description |
|---|---|
| client_id | This is the same Nextech-issued client ID that was used in step 1 above |
| grant_type | This is always set to authorization_code |
| code | This is code received from the Nextech authorization server in step 3 above |
| redirect_uri | This must match the URI used in step 1 above |
| scope | This must match the scopes used in step 1 above |
| code_verifier | This is the original (unhashed) random string that was provided in a hashed format in the code_challenge parameter in step 1 above |
The Nextech authorization server will then respond to with a response similar to below, which includes an access token that can now be used by the SMART app to access FHIR resources within the Nextech API:
{
"access_token":"eyJraWQiOiJ1.eyJhenAiOiJteS1jbGllb.Bv42OB0f",
"id_token":"eyJra33ed8dofh.doh3ohfeisgdOiJteS1jbGllb.u44hdhB0p",
"token_type":"bearer",
"expires_in":900,
"scope":"openid fhirUser launch/patient patient/AllergyIntolerance.read",
"patient":"123",
"encounter":null,
"smart_style_url":"https://sts.mypatientvisit.com/css/smart-style.json?v=133092895520000000",
"need_patient_banner": false
}
Response body notes:
| Name | Description |
|---|---|
| id_token | returned if the openid and/or fhirUser scopes are approved by the SMART app user. Contains information about the user. The fhirUser claim within this token can be used to retrieve information about the user via a FHIR resource endpoint |
| patient | Patient ID indicating that the app launched in the context of a patient with this ID. Any patient-level scopes will be scoped to this particular patient |
| encounter | Encounter ID, indicating that the app launched in the context of a particular encounter. Currently returned, but not supported |
| need_patient_banner | Used in EHR launches for practitioner apps. Indicates whether or not the app was launched in a context that requires a patient banner be displayed |
| smart_style_url | Used in EHR launches for practitioner apps. URL where styling information can be found, for apps that support styling |
Additionally, if the offline_access scope is requested by the app (recommended, or else the app will have to frequently re-authenticate with the Nextech authorization server), and consented to by the SMART app user, then the response body will contain a refresh_token member containing a refresh token that can be used to acquire a new access_token once the one received in the response expires (in the amount of time, in seconds, indicated by the expires_in response body member).
PKCE
PKCE, using a SHA-256 hashing method for its code challenge values, must be used with all SMART apps following the authorization code flow (so any apps that require user interaction), so that potential interception attacks can be mitigated. PKCE requires that the SMART app add an additional token to the initial authorization request, and then requires the SMART app to submit a verifier during the code exchange step that can be used as additional proof that no "man in the middle" has intercepted the authorization code and is trying to maliciously redeem it.
In order to use PKCE, the SMART app must first generate a random string to use as a challenge value. This should be a new random string each time PKCE is used. Once the random string is generated, create a SHA-256 hash of the random string and Base64-encode it for use as the code_challenge URL parameter in authorize request. This is the first step of the authorization code flow.
System apps
SMART apps of this type have no need for user interaction, can run autonomously (or semi-autonomously), and are capable of protecting a private key. System apps must follow the SMART Backend Services Authorization (STU 1.0.1) specification for authentication/authorization, which requires that SMART apps follow the client credentials flow, with JWT credentials, which is described below. The practice that the system app wishes to access must be setup with myPatientVisit, and established at app registration time.
Client credentials flow with JWT credentials
System apps follow a variation of the client credentials flow, one that uses a cryptographically secure, signed JWT (JSON Web Token) that it presents to the Nextech authorization server, instead of a client secret. This flow is fully defined in RFC 7526.
In order to authenticate, the SMART app must first create a JWT resembling the following, and digitally sign it using the SMART app's private key (which must be either an RS384 or ES384 signature):
{
"jti":"random-non-reusable-jwt-id-12",
"sub":"my-client-id",
"iss":"my-client-id",
"aud":"https://sts.mypatientvisit.com/connect/token",
"kid":"some-key-id",
"exp":1623019405,
"iat":1623019345
}
Important to note:
- The
subandissclaims within the JWT must be the Nextech-issued client ID of the application, and must be exactly the same - The
audclaim is the token endpoint of the Nextech authorization server
After the JWT is digitally signed, it must be sent to the Nextech authorization server with a request like below:
POST /connect/token Accept: application/json Content-Type: application/x-www-form-urlencodedgrant_type=client_credentials &client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer &client_assertion=[signed JWT] &scope=[spaceDelimitedDesiredScopes]
The Nextech authorization server will then respond with a response like below, containing an access token that the system app can use to access FHIR resources from the Nextech API:
{
"access_token":"eyJraWQiOiJ1bml0dG.eyJhenAiOiJteS1j.THbNnfuX7Ly4g",
"token_type":"bearer",
"expires_in":900,
"scope":"[spaceDelimitedDesiredScopes]"
}
Scopes
Nextech currently only supports scopes that adhere to the format defined in version 1.0.0 of the SMART app specification, as indicated here. The full list of scopes supported by the Nextech API for SMART apps (depending on the type of SMART app) are as follows:
For patient or practitioner-facing apps:
openidfhirUseroffline_access(needed in order to receive a refresh token)
For patient-facing apps permission-v1 (standalone patient apps, or practitioner apps acting in a patient context):
launch/patientpatient/*.readpatient/Account.readpatient/AllergyIntolerance.readpatient/CarePlan.readpatient/CareTeam.readpatient/Condition.readpatient/Coverage.readpatient/Device.readpatient/Binary.readpatient/DiagnosticReport.readpatient/DocumentReference.readpatient/DocumentReference.writepatient/Encounter.readpatient/Goal.readpatient/Immunization.readpatient/Location.readpatient/MedicationDispense.readpatient/MedicationRequest.readpatient/Observation.readpatient/Organization.readpatient/Patient.readpatient/Practitioner.readpatient/Procedure.readpatient/Provenance.readpatient/RelatedPerson.readpatient/ServiceRequest.readpatient/Specimen.read
For patient-facing apps permission-v2 (standalone patient apps, or practitioner apps acting in a patient context):
launch/patientpatient/*.rspatient/Account.rspatient/AllergyIntolerance.rspatient/CarePlan.rspatient/CareTeam.rspatient/Condition.rspatient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosispatient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-itempatient/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern
patient/Coverage.rspatient/Device.rspatient/Binary.rspatient/DiagnosticReport.rspatient/DocumentReference.rspatient/DocumentReference.cudpatient/Encounter.rspatient/Goal.rspatient/Immunization.rspatient/Location.rspatient/MedicationDispense.rspatient/MedicationRequest.rspatient/Observation.rspatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|activitypatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|clinical-testpatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|exampatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|imagingpatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratorypatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|procedurepatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|social-historypatient/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdohpatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|surveypatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|therapypatient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs
patient/Organization.rspatient/Patient.rspatient/Practitioner.rspatient/Procedure.rspatient/Provenance.rspatient/ServiceRequest.rspatient/Specimen.rspatient/RelatedPerson.rs
For practitioner-facing apps permission-v1:
launchuser/*.readuser/Account.readuser/AllergyIntolerance.readuser/CarePlan.readuser/CareTeam.readuser/Condition.readuser/Coverage.readuser/Device.readuser/Binary.readuser/DiagnosticReport.readuser/DocumentReference.readuser/DocumentReference.writeuser/Encounter.readuser/Goal.readuser/Immunization.readuser/Location.readuser/MedicationDispense.readuser/MedicationRequest.readuser/Observation.readuser/Organization.readuser/Patient.readuser/Practitioner.readuser/Procedure.readuser/Provenance.readuser/RelatedPerson.readuser/ServiceRequest.readuser/Specimen.read
For practitioner-facing apps permisison-v2:
launchuser/*.rsuser/Account.rsuser/AllergyIntolerance.rsuser/CarePlan.rsuser/CareTeam.rsuser/Condition.rsuser/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosisuser/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-itemuser/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern
user/Coverage.rsuser/Device.rsuser/Binary.rsuser/DiagnosticReport.rsuser/DocumentReference.rsuser/DocumentReference.cuduser/Encounter.rsuser/Goal.rsuser/Immunization.rsuser/Location.rsuser/MedicationDispense.rsuser/MedicationRequest.rsuser/Observation.rsuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|activityuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|clinical-testuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|examuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|imaginguser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratoryuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|procedureuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|social-historyuser/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdohuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|surveyuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|therapyuser/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs
user/Organization.rsuser/Patient.rsuser/Practitioner.rsuser/Procedure.rsuser/Provenance.rsuser/RelatedPerson.rsuser/ServiceRequest.rsuser/Specimen.rs
For secure, system apps that require no user interaction permission-v1:
system/*.readsystem/Account.readsystem/AllergyIntolerance.readsystem/CarePlan.readsystem/CareTeam.readsystem/Condition.readsystem/Coverage.readsystem/Device.readsystem/Binary.readsystem/DiagnosticReport.readsystem/DocumentReference.readsystem/DocumentReference.writesystem/Encounter.readsystem/Goal.readsystem/Immunization.readsystem/Location.readsystem/MedicationDispense.readsystem/MedicationRequest.readsystem/Observation.readsystem/Organization.readsystem/Patient.readsystem/Practitioner.readsystem/Procedure.readsystem/Provenance.readsystem/RelatedPerson.readsystem/ServiceRequest.readsystem/Specimen.read
For secure, system apps that require no user interaction permission-v2:
system/*.rssystem/Account.rssystem/AllergyIntolerance.rssystem/CarePlan.rssystem/CareTeam.rssystem/Condition.rssystem/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosissystem/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-itemsystem/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern
system/Coverage.rssystem/Device.rssystem/Binary.rssystem/DiagnosticReport.rssystem/DocumentReference.rssystem/DocumentReference.cudsystem/Encounter.rssystem/Goal.rssystem/Immunization.rssystem/Location.rssystem/MedicationDispense.rssystem/MedicationRequest.rssystem/Observation.rssystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|activitysystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|clinical-testsystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|examsystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|imagingsystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratorysystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|proceduresystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|social-historysystem/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdohsystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|surveysystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|therapysystem/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs
system/Organization.rssystem/Patient.rssystem/Practitioner.rssystem/Procedure.rssystem/Provenance.rssystem/RelatedPerson.rssystem/ServiceRequest.rssystem/Specimen.rs
Note:
- When sub-scopes are requested, the parent resource-level scope (e.g.,user/Condition.rsoruser/Observation.rs) will not be granted.
- The Authorization server enforces filtering so that only data matching the selected sub-categories is returned.
- Supported for launch contextsuser/,patient/, andsystem/.
All scope names map to the FHIR resource endpoint that they can be used against. For example, a SMART app using an access token that has been granted the patient/Encounter.read, patient/Encounter.rs, user/Encounter.read, user/Encounter.rs, system/Encounter.read or system/Encounter.rs scopes can use that token against the GET https://select.nextech-api.com/api/r4/Encounter/{someEncounterID} endpoint to grab information about a particular encounter.
Important note: With the exception of the DocumentReference.write or DocumentReference.cud scopes, writing-related scopes are currently not supported. Additionally, SMART apps must only request the bare minimum scopes that are required for their app to function.
Example of SMART App Authorization With Postman
Once you have been issued a client ID (and client secret, if capable of securing one) from Nextech, you can use Postman to test grabbing an access token using your app credentials:
- For a given Postman collection, go to the Authorization tab.
- Set Authorization to
OAuth 2.0— this will display additional fields to fill out. - Header Prefix should be set to
Bearer. - Grant type should be set to Authorization Code (With PKCE).
- Auth URL:
https://sts.mypatientvisit.com/connect/authorize?aud=https://select.nextech-api.com/api/r4 - Access Token URL:
https://sts.mypatientvisit.com/connect/token - Client ID: the value given to you by Nextech.
- Secret: the value given to you by Nextech, if any.
- Code Challenge Method: should be
SHA-256. - Scopes: all needed scopes, space-delimited. At a minimum:
launch/patient openid
Once these fields are filled out and the authorization request is made, your browser should open up to the Nextech authorization server's login screen. MyPatientVisit user credentials, for patient-facing apps, or Nextech software user credentials, for practitioner-facing apps, will have to be used to log in. After logging in, the user will select which practice and patient they are granting access to, and then they will consent (or not) to the requested scopes. Once this is done, there will be a callback to Postman (check browser pop-up settings and try changing your default browser if that fails). When Postman receives this callback, it will pop up a dialog containing the response information from the Nextech authorization server, including the access token.
Using the Access Token
Once the app has gone through the above steps to acquire an access token, that access token needs to be placed in an Authorization header, using the Bearer scheme:Bearer {token} where {token} represents the access token, for all requests made from the app to the Nextech API's FHIR resource endpoints.
Refresh Access Token
Refresh tokens are used to renew an expired access token without providing user credentials. An access_token and refresh_token pair is issued when requesting an access token using the authorization code flow (see above) for patient or practitioner-facing SMART apps (system apps are not issued refresh tokens, and so must always request a new access token upon previous access token expiration), as long as the SMART app requests the offline_access scope, and the user consents to that scope. When the access_token expires, the SMART app can call into the Nextech authorization server's connect/token endpoint to be issued a new access token (and refresh token), as shown below:
POST /connect/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [client ID and secret]
grant_type=refresh_token&refresh_token=<{refreshToken}
Header notes:
| Name | Description |
|---|---|
| Content-Type | must be set to application/x-www-form-urlencoded |
| Authorization | This header is optional, and must only be used if the SMART app client is a confidential client (i.e. it has a client secret configured that it is capable of securely storing). This header uses Basic auth, which will have the string Basic, followed by a space, followed by the Base-64 encoding of the string in the form [client ID]:[client secret]. |
Parameter notes:
| Name | Description |
|---|---|
| grant_type | This is always set to refresh_token |
| refresh_token | This is the refresh token that was returned alongside the access_token in the previous response from the Nextech authorization server, when the SMART app first acquired an access token |
Revoking Refresh Tokens
If a SMART app wishes to revoke a refresh token that it has been issued, then it can do so by making a call like below to the Nextech authorization server:
POST /connect/revocation
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [client ID and secret]
token={refreshToken}
Header notes:
| Name | Description |
|---|---|
| Content-Type | must be set to application/x-www-form-urlencoded |
| Authorization | This header is optional, and must only be used if the SMART app client is a confidential client (i.e. it has a client secret configured that it is capable of securely storing). This header uses Basic auth, which will have the string Basic, followed by a space, followed by the Base-64 encoding of the string in the form [client ID]:[client secret]. |
Parameter notes:
token- This is the refresh token that was returned alongside theaccess_tokenin the previous response from the Nextech authorization server, when the SMART app first acquired an access token
Revoking the refresh token will make it so that the SMART app will need to have the user re-authorize the SMART application's required scopes, once the access token that accompanied the refresh token expires.
Nextech Authorization Server Metadata Endpoint
SMART apps can call the Nextech authorization server's OpenID Connect metadata endpoint in order to find out information about the available endpoints, scopes, and response types supported by the Nextech authorization server, for use by SMART applications:
GET .well-known/openid-configuration
This endpoint requires no authentication.
Nextech Authorization Server UserInfo Endpoint
SMART apps can call the Nextech authorization server's UserInfo endpoint to learn more about the user associated with a given access token:
GET connect/userinfo Authorization: Bearer [access token]
Header notes:
Authorization- This header must contain theaccess_tokenprevously acquired from the Nextech authorization server in the previous response from the Nextech authorization server, when the SMART first acquired an access token, following theBearertext in the header value
Nextech Authorization Server Session Lifetime
All browser sessions that a SMART app opens with the Nextech authorization server are only good for the lifetime of the browser window/tab. No persisted web authorization session is kept between a given SMART app and the Nextech authorization server after the app has successfully been authorized (or just exited the Nextech authorization server web page), so, if a SMART app redirects to the Nextech authorization server not long after being issued an access and/or refresh token then the Nextech authorization server will once more prompt the user of the app to log in again, no matter how much time has passed since the SMART app's previous authorization request. Since there is no persistent authorization web session maintained between the SMART app and the Nextech authorization server, there is no need for the SMART app to logout of the Nextech authorization server session: once the refresh token (if any was obtained, otherwise just the access token) expires the SMART app will need to re-authorize with the Nextech authorization server.
Metadata
Overview
Information about supported server functionality and the server's SMART on FHIR configuration.
Capability Statement
Fields
| Name | Description | Type |
|---|---|---|
| resourceType | The declaration of the type of resource this is. | string |
| status | The status of this capability statement. | code |
| date | The date (and optionally time) when the capability statement was published. | dateTime |
| publisher | The name of the organization or individual that published the capability statement. | string |
| kind | The way that this statement is intended to be used, to describe an actual running instance of software, a particular product or a class of implementation. | code |
| implementation.description | Information about the specific installation that this capability statement relates to. | string |
| implementation.url | An absolute base URL for the implementation. | url |
| fhirVersion | The version of the FHIR specification that this CapabilityStatement describes. | code |
| format | A list of the formats supported by this implementation using their content types. | code |
| implementationGuide | A list of implementation guides that the server does (or should) support in their entirety. | canonical(Implementation Guide) |
| instantiates | Reference to a canonical URL of another CapabilityStatement that this software implements. | canonical(Capabiliy Statement) |
| rest.mode | Identifies whether this portion of the statement is describing the ability to initiate or receive restful operations. | code |
| rest.security.extension | The oauth uris for this server ('authorize' and 'token' endpoints). | Extension |
| rest.security.service | Types of security services that are supported by the system. | CodeableConcept |
| rest.resource.type | A type of resource exposed via the restful interface. | code |
| rest.resource.supportedProfile | A list of profiles that represent different use cases supported by the system. | canonical(StructureDefinition) |
| rest.resource.interaction.code | Coded identifier of the operation, supported by the system resource. | code |
| rest.resource.searchRevInclude | A list of _revinclude (reverse include) values supported by the server. | string |
| rest.resource.searchParam.name | The name of the search parameter used in the interface. | string |
| rest.resource.searchParam.type | The type of value a search parameter refers to, and how the content is interpreted. | code |
| rest.resource.operation.name | The name of the operation or query. | string |
Get
Retrieves the Capability Statement which holds information about supported server functionality.
HTTP Request
GET /r4/metadata
Example: Get Capability Statement
GET https://select.nextech-api.com/api/r4/metadata
SMART Configuration
Fields
| Name | Description | Type |
|---|---|---|
| capabilities | Array of strings representing SMART capabilities | string |
| authorization_endpoint | URL to the OAuth2 authorization endpoint | url |
| token_endpoint | URL to the OAuth2 token endpoint | url |
| token_endpoint_auth_methods_supported | Array of client authentication methods supported by the token endpoint | string |
| token_endpoint_auth_signing_alg_values_supported | Array containing a list of the JWS signing algorithms supported by the token endpoint. | string |
Get
Retrieves server's SMART on FHIR configuration
HTTP Request
GET /r4/.well-known/smart-configuration
Example: Get SMART on FHIR configuration
GET https://select.nextech-api.com/api/r4/.well-known/smart-configuration
Patient
Overview
The patient resource contains information about the demographics of a patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique identifier of the patient | string | 12.6 |
| identifier | The unique value assigned to each patient which discerns them from all others. It can be the patient's unique identifier or the patient's Nextech chart number. As a convenience for some use cases, in version 14.1 and above, the patient's masked social security number (last four only) is also returned in this field if available. |
Identifier | 12.6 |
| extension:race | The race of the patient | Extension (US Core Race Extension) | 12.6 |
| extension:ethnicity | The ethnicity of the patient | Extension (US Core Ethnicity Extension) | 12.6 |
| extension:birthsex | The patient's sex assigned at birth | Extension (US Core Birth Sex Extension) | 12.6 |
| extension:genderIdentity | The gender identity of the patient | Extension (US Core Gender Identity Extension) | 17.1 |
| name | Names of the patient, additional information including prefix and nickname added in version 12.9.20. Other patient names are also returned here starting in 16.9 | HumanName | 12.6 |
| telecom | Contact details for the patient, fax, preferred contact, and other phone added 12.9.20 | ContactPoint | 12.6 |
| gender | The gender of the patient | code | 12.6 |
| birthDate | The date of birth of the patient | date | 12.6 |
| address | Addresses associated with the patient. Previous patient addresses are also returned here starting in 16.9 | Address | 12.6 |
| communication | A list of Languages which may be used to communicate with the patient about his or her health | BackboneElement | 12.6 |
| deceased | Indicates if the individual is deceased or not. If the patient is deceased, it contains the date of death. | dateTime | 18.5 |
| extension:sex | The Sex Extension is used to reflect the documentation of a person's sex. | Extension (US Core Sex Extension) | 18.6 |
| extension:tribalAffiliation | The tribal affiliation of the patient | Extension (US Core Tribal Affiliation Extension) | 18.7 |
Example
{
"resourceType": "Patient",
"id": "b664fd37-ff5f-4022-9d71-2e476d42f316",
"extension": [
{
"extension": [
{
"url": "ombCategory",
"valueCoding": {
"system": "urn:oid:2.16.840.1.113883.6.238",
"code": "2054-5",
"display": "Black or African American"
}
},
{
"url": "text",
"valueString": "Black or African American"
}
],
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
},
{
"extension": [
{
"url": "detailed",
"valueCoding": {
"system": "urn:oid:2.16.840.1.113883.6.238",
"code": "2072-7",
"display": "Jamaican"
}
},
{
"url": "text",
"valueString": "Jamaican"
}
],
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
},
{
"extension": [
{
"url": "ombCategory",
"valueCoding": {
"system": "urn:oid:2.16.840.1.113883.6.238",
"code": "2186-5",
"display": "Not Hispanic or Latino"
}
},
{
"url": "text",
"valueString": "Not Hispanic or Latino"
}
],
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-sex",
"valueCode": "248153007"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-genderIdentity",
"valueCodeableConcept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "446151000124109",
"display": "Identifies as Male"
}
],
"text": "Identifies as Male"
}
},
{
"extension": [
{
"url": "tribalAffiliation",
"valueCodeableConcept": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-TribalEntityUS",
"code": "338",
"display": "Native Village of Afognak"
}
]
}
}
],
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-tribal-affiliation"
}
],
"identifier": [
{
"use": "official",
"system": "",
"value": "b664fd37-ff5f-4022-9d71-2e476d42f316"
},
{
"use": "usual",
"system": "",
"value": "112334"
}
],
"name": [
{
"use": "official",
"text": "John Jacob Smith",
"family": "Smith",
"given": [
"John",
"Jacob"
],
"suffix": [
""
]
}
],
"telecom": [
{
"system": "email",
"value": "example@nextech.com"
},
{
"system": "phone",
"value": "(763) 560-8033",
"use": "home"
}
],
"gender": "male",
"birthDate": "1952-06-13",
"deceasedDateTime": "2024-08-29",
"address": [
{
"use": "home",
"type": "both",
"line": [
"4807 89th Ave N"
],
"city": "Brooklyn Park",
"state": "MN",
"postalCode": "55443",
"country": "USA"
}
],
"communication": [
{
"language": {
"coding": [
{
"system": "urn:ietf:bcp:47",
"code": "en",
"display": "English"
}
],
"text": "English"
},
"preferred": true
}
]
}
Contact Information and Privacy
The telecom section contains the contact information for the patient. The example above shows the complete response based on what information is on file and which privacy settings are set. If the Privacy setting is checked then the checked fields will not be sent over the API even though the contact information is on file.
i.e The patient's work number is on file, but marked private then the telecom section will not contain the work field.
The preferred contact is also available from the API. If a preferred contact is set then it will contain a "rank":1 member in the telecom object indicating it is the preferred method.
Get
Returns a single Patient result based on the patient ID.
HTTP Request
GET /r4/Patient/{patientId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patientId | path | The unique identifier for the patient | Yes | 12.6 |
Example: Get the patient with an ID of 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a'
GET https://select.nextech-api.com/api/r4/Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
Search
Searches for all patients matching the given search criteria. See https://www.hl7.org/fhir/R4/search.html for instructions on formatting search criteria.
HTTP Request
GET /r4/Patient?{parameters}POST /r4/Patient/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Type | Initial Version |
|---|---|---|---|---|---|
| _lastUpdated | query or body | The date the patient was last modified formatted as yyyy-MM-dd. As of version 14.3, we also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] | No | dateTime | 12.8 |
| family | query or body | The family (last) name of the patient | No | string | 12.6 |
| given | query or body | The given (first) name of the patient | No | string | 12.6 |
| birthdate | query or body | The patient's date of birth formatted as YYYY-MM-DD | No | dateTime | 12.6 |
| phone | query or body | The patient's phone number which will be matched against any phone number (home, cell, etc.) | No | string | 12.6 |
| query or body | The patient's email address | No | string | 12.6 | |
| address-city | query or body | The city of the patient's address | No | string | 12.6 |
| address-state | query or body | The state of the patient's address | No | string | 12.6 |
| address-postalcode | query or body | The postal (zip) code of the patient's address | No | string | 12.6 |
| name | query or body | The given(first) name, middle name, family(last) name, prefix or title of the patient | No | string | 12.6 |
| identifier | query or body | The unique value assigned to each patient which discerns them from all others. It can be the patient's unique identifier or the patient's Nextech chart number | No | string | 12.6 |
| _id | query or body | The unique value assigned to each patient which discerns them from all others. It can be the patient's unique identifier or the patient's Nextech chart number | No | string | 16.7 |
| gender | query or body | The gender of the patient | No | string | 16.7 |
| group-id | query or body | The letter writing group of the patient | No | string | 16.8 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each patient |
No | string | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with patients
The _revinclude parameter allows support for including Provenance references that match the returned patient.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the patient.
Example: Get a patient with an identifier '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' with provenance
GET https://select.nextech-api.com/api/r4/Patient?identifier=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Patient/_search body: identifier=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Patient?_id=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Patient/_search body: _id=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&_revinclude=Provenance:target
Example: Get the patient of a specific chart number
GET https://select.nextech-api.com/api/r4/Patient/12345
Example: Get all patients
GET https://select.nextech-api.com/api/r4/Patient
Example: Get all patients with identifier '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192'
GET https://select.nextech-api.com/api/r4/Patient?identifier=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
POST https://select.nextech-api.com/api/r4/Patient/_search body: identifier=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
GET https://select.nextech-api.com/api/r4/Patient?_id=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
POST https://select.nextech-api.com/api/r4/Patient/_search body: _id=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
Example: Get all patients who live within '12345' zip code
GET https://select.nextech-api.com/api/r4/Patient?address-postalcode=12345
POST https://select.nextech-api.com/api/r4/Patient/_search body: address-postalcode=12345
Example: Get all patients with birth dates between and including 1/1/1981 through 5/31/1981
GET https://select.nextech-api.com/api/r4/Patient?birthdate=ge1981-01-01&birthdate=lt1981-05-31
POST https://select.nextech-api.com/api/r4/Patient/_search body: birthdate=ge1981-01-01&birthdate=lt1981-05-31
Patient ID Search
Attempts to find patient IDs that match the given search criteria and, if successful, returns those patients' unique identifiers.
HTTP Request
GET /r4/Patient/ID?{parameters}
Parameters
| Name | Located in | Description | Required | Type | Initial Version |
|---|---|---|---|---|---|
| group-id | query | The letter writing group of the patient | No | string | 16.8 |
Example: Get the unique identifiers of all patients that are in a letter writing group with an ID of 20
GET https://select.nextech-api.com/api/r4/Patient/ID?group-id=20
Allergy Intolerance
Overview
The allergy intolerance resource describes the risk of undesirable responses of exposure to a substance.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 12.6 |
| identifier | The unique value assigned to each allergy intolerance record which discerns them from all others. | Identifier | 12.6 |
| clinicalStatus | Describes whether the allergy or intolerance is active, inactive or resolved | CodeableConcept | 12.6 |
| verificationStatus | Assertion about certainty associated with the propensity, or potential risk, of a reaction to the identified substance (including pharmaceutical product). | CodeableConcept | 12.6 |
| code | The clinical code that identifies the allergy or intolerance | CodeableConcept | 12.6 |
| patient | The patient who the allergy or intolerance is for | Reference (US Core Patient Profile) | 12.6 |
| reaction | Details about each adverse reaction event linked to exposure to the identified substance. | BackboneElement | 12.6 |
| reaction.manifestation | Clinical symptoms and/or signs that are observed or associated with the adverse reaction event. | CodeableConcept | 12.6 |
Example
{
"resourceType": "AllergyIntolerance",
"id": "21",
"identifier": [
{
"use": "official",
"value": "21"
}
],
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
"code": "active"
}
]
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification",
"code": "unconfirmed"
}
]
},
"code": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "852519",
"display": "house dust"
}
],
"text": "house dust"
},
"patient": {
"reference": "Patient/b664fd37-ff5f-4022-9d71-2e476d42f316",
"display": "Smith, John Jacob"
},
"reaction": [
{
"manifestation": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "25064002",
"display": "Headache"
}
],
"text": "Headache"
}
]
}
]
}
Get
Returns a single AllergyIntolerance result based on the allergy intolerance ID.
HTTP Request
GET /r4/AllergyIntolerance/{allergyId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| allergyId | path | The unique identifier for the allergy intolerance | Yes | 16.7 |
Example: Get the allergy intolerance with an ID of '123'
GET https://select.nextech-api.com/api/r4/AllergyIntolerance/123
Search
Searches for allergy intolerances for a single patient
HTTP Requests
GET /r4/Patient/{patientUid}/AllergyIntolerance?{parameters}GET /r4/AllergyIntolerance?{parameters}POST /r4/Patient/AllergyIntolerance/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body | The unique identifier of the allergy intolerance | No | 16.7 |
| _id | query or body | The unique identifier of the allergy intolerance | No | 16.7 |
| patientUid | path | The official patient identifier acquired from a patient search | No | 12.6 |
| patient | query or body | The patient who the allergy or intolerance is for | No | 12.6 |
| _lastUpdated | query or body | The date the allergy intolerance was last modified, formatted as OOXXXXX where OO is an operator and XXXXX is a date in the form YYYY-MM-DD | No | 12.6 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each allergy intolerance |
No | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with allergy intolerances
The _revinclude parameter allows support for including Provenance references that match the returned allergy intolerance.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the allergy intolerance.
Example: Get an allergy intolerance with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/AllergyIntolerance?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/AllergyIntolerance/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/AllergyIntolerance?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/AllergyIntolerance/_search body: _id=123&_revinclude=Provenance:target
Examples:
GET https://select.nextech-api.com/api/r4/Patient/b664fd37-ff5f-4022-9d71-2e476d42f316/AllergyIntolerance?_lastUpdated=ge2022-01-01
GET https://select.nextech-api.com/api/r4/AllergyIntolerance?patient=b664fd37-ff5f-4022-9d71-2e476d42f316
GET https://select.nextech-api.com/api/r4/AllergyIntolerance?patient=Patient/b664fd37-ff5f-4022-9d71-2e476d42f316
POST https://select.nextech-api.com/api/r4/AllergyIntolerance/_search body: patient=b664fd37-ff5f-4022-9d71-2e476d42f316
Care Plan
Overview
A Care Plan contains patient diet, procedure, lab work and counseling and other care information for a single patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each care plan which discerns them from all others. | string | 16.9 |
| subject | The patient pertaining to the care plan. | Reference(US Core Patient Profile) | 16.9 |
| text | A human-readable narrative that contains a summary of the resource. | Narrative | 16.9 |
| text.div | The actual narrative content of the patient care plan. | xhtml | 16.9 |
| text.status | The text status for the resource narrative. | code | 16.9 |
| category | The type of the care plan. | CodeableConcept | 16.9 |
| status | Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record. | code | 16.9 |
| intent | Indicates the level of intentionality associated with the care plan (proposal, plan, order, option). | code | 16.9 |
Example
{
"resourceType": "CarePlan",
"id": "674",
"text": {
"status": "additional",
"div": "Get a Chest X-ray done on 6/23/2015 showing the Lower Respiratory Tract Structure."
},
"status": "active",
"intent": "plan",
"category": [
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category",
"code": "assess-plan"
}
]
}
],
"subject": {
"reference": "Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a",
"display": "Newman, Alice Jones"
}
}
Get
Returns a single Care Plan result based on the Care Plan ID.
HTTP Request
GET /r4/CarePlan/{carePlanId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| carePlanId | path | The unique identifier for the care plan | Yes | 16.9 |
Example: Get the care plan with an ID of '676'
GET https://select.nextech-api.com/api/r4/CarePlan/676
Search
Searches for care plans for a single patient
HTTP Requests
GET /r4/CarePlan?{parameters}POST /r4/CarePlan/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.9 |
| _id | query or body | The unique identifier for the care plan | No | 16.9 |
| identifier | query or body | The unique identifier for the care plan | No | 16.9 |
| category | query or body | The type of the care plan. Ex.: 'assess-plan' | No | 16.9 |
| _lastUpdated | query or body | The date the care plan was last modified, formatted as OOXXXXX where OO is an operator and XXXXX is a date in the form YYYY-MM-DD. | No | 16.9 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each care plan |
No | 16.9 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with care plans
The _revinclude parameter allows support for including Provenance references that match the returned care plans.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the care plan.
Example: Get a care plan with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/CarePlan?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/CarePlan/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/CarePlan?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/CarePlan/_search body: _id=123&_revinclude=Provenance:target
Example: Get all care plans for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a' and category 'assess-plan'
GET https://select.nextech-api.com/api/r4/CarePlan?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=assess-plan
GET https://select.nextech-api.com/api/r4/CarePlan?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=assess-plan
GET https://select.nextech-api.com/api/r4/CarePlan?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=http://hl7.org/fhir/us/core/CodeSystem/careplan-category|assess-plan
POST https://select.nextech-api.com/api/r4/CarePlan/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=assess-plan
POST https://select.nextech-api.com/api/r4/CarePlan/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=http://hl7.org/fhir/us/core/CodeSystem/careplan-category|assess-plan
Example: Get all care plans for a single patient that were modified as of 5/5/2022
GET https://select.nextech-api.com/api/r4/CarePlan?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&_lastUpdated=ge2022-05-05
Example: Get all care plans that were modified by 5/5/2022
GET https://select.nextech-api.com/api/r4/CarePlan?_lastUpdated=le2022-05-05
Care Team
Oveview
The CareTeam resource includes all the people and organizations who plan to participate in the coordination and delivery of care for a patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each care team which discerns them from all others. | string | 16.9 |
| status | Indicates the current state of the care team. | code | 16.9 |
| subject | Identifies the patient or group whose intended care is handled by the team. | Reference(US Core Patient Profile) | 16.9 |
| participant.role | Indicates specific responsibility of an individual within the care team, such as "Primary care physician", "Caregiver", etc. | CodeableConcept | 16.9 |
| participant.member | The specific person or organization who is participating/expected to participate in the care team. | Reference (US Core Patient Profile or US Core Practitioner Profile or US Core Organization Profile) | 16.9 |
Example
{
"resourceType": "CareTeam",
"id": "3",
"status": "active",
"subject": {
"reference": "Patient/3",
"display": "Newman, Alice Jones"
},
"participant": [
{
"role": [
{
"coding": [
{
"system": "http://nucc.org/provider-taxonomy",
"code": "2086S0122X"
}
]
}
],
"member": {
"reference": "Practitioner/5",
"display": "Davis, Albert"
}
},
{
"role": [
{
"coding": [
{
"system": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
"code": "unknown"
}
]
}
],
"member": {
"reference": "Practitioner/77",
"display": "Davis, Tracy"
}
},
{
"role": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "116154003"
}
]
}
],
"member": {
"reference": "Patient/3",
"display": "Newman, Alice Jones"
}
}
]
}
Get
Returns a single Care Team result based on the Care Team ID.
HTTP Request
GET /r4/CareTeam/{careTeamId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| careTeamId | path | The unique identifier for the care team | Yes | 16.9 |
Example: Get the care team with an ID of '3'
GET https://select.nextech-api.com/api/r4/CareTeam/3
Search
Searches for care teams for a single patient
HTTP Requests
GET /r4/CareTeam?{parameters}POST /r4/CareTeam/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.9 |
| _id | query or body | The unique identifier for the care team | No | 16.9 |
| identifier | query or body | The unique identifier for the care team | No | 16.9 |
| status | query or body | Indicates the current state of the care team. Ex.: 'active' | No | 16.9 |
| _lastUpdated | query or body | The date the care team was last modified, formatted as OOXXXXX where OO is an operator and XXXXX is a date in the form YYYY-MM-DD. | No | 16.9 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each care team |
No | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with care teams
The _revinclude parameter allows support for including Provenance references that match the returned care teams.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the care team.
Example: Get a care team with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/CareTeam?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/CareTeam/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/CareTeam?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/CareTeam/_search body: _id=123&_revinclude=Provenance:target
Example: Get all care teams for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a' and status 'active'
GET https://select.nextech-api.com/api/r4/CareTeam?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&status=active
GET https://select.nextech-api.com/api/r4/CareTeam?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&status=active
GET https://select.nextech-api.com/api/r4/CareTeam?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&status=http://hl7.org/fhir/ValueSet/care-team-status|active
POST https://select.nextech-api.com/api/r4/CareTeam/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&status=active
POST https://select.nextech-api.com/api/r4/CareTeam/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&status=http://hl7.org/fhir/ValueSet/care-team-status|active
Example: Get all care teams for a single patient that were modified as of 5/5/2022
GET https://select.nextech-api.com/api/r4/CareTeam?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&_lastUpdated=ge2022-05-05
Example: Get all care teams that were modified by 5/5/2022
GET https://select.nextech-api.com/api/r4/CareTeam?_lastUpdated=le2022-05-05
Condition
Overview
The condition (an encounter diagnosis, a health concern or a problem) resource describes a certain state of health of a patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each condition record which discerns them from all others | Identifier | 16.8 |
| clinicalStatus | The condition status | Condition Clinical Status Code | 16.8 |
| verificationStatus | The condition verification status | Condition Verification Status | 16.8 |
| category:us-core | A category assigned to the condition | CodeableConcept using US Core Problem or Health Concern value set | 16.8 |
| category:screening-assessment | A category that can be used to classify that this Condition is related to a USCDI Health Status/Assessments Data Class | CodeableConcept using US Core Screening Assessment value set | 19.1 |
| code | Identification of the condition, problem or diagnosis | Condition/Problem/Diagnosis Code | 16.8 |
| subject | The patient pertaining to the condition | Reference(US Core Patient Profile) | 16.8 |
| recordedDate | Date record was first recorded | dateTime | 17.1 |
| extension:assertedDate | The date on which the existence of the Condition was first asserted or acknowledged | Extension (assertedDate) | 17.1 |
| onsetDateTime | Estimated or actual date or date-time the condition began | dateTime | 17.1 |
| abatementDateTime | The date or estimated date that the condition resolved or went into remission | dateTime | 17.1 |
| encounter | Encounter created as part of | Reference (US Core Encounter Profile) | 17.1 |
Examples
{
"resource": {
"resourceType": "Condition",
"id": "ed-1",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
"valueDateTime": "2022-09-22"
}
],
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "resolved",
"display": "Resolved"
}
],
"text": "Resolved"
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
"code": "confirmed",
"display": "Confirmed"
}
],
"text": "Confirmed"
},
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-category",
"code": "encounter-diagnosis",
"display": "Encounter Diagnosis"
}
],
"text": "Encounter Diagnosis"
}
],
"code": {
"coding": [
{
"system": "http://hl7.org/fhir/sid/icd-10",
"code": "L11.1",
"display": "Transient acantholytic dermatosis [Grover]"
}
],
"text": "Transient acantholytic dermatosis [Grover]"
},
"subject": {
"reference": "Patient/683cbc02-a96c-4697-b7e6-df0e9391d333",
"display": "Tester, Inferno Official"
},
"encounter": {
"reference": "Encounter/30"
},
"onsetDateTime": "2022-08-29",
"abatementDateTime": "2022-11-04",
"recordedDate": "2022-09-22"
}
}
{
"resource": {
"resourceType": "Condition",
"id": "hc-4116",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
"valueDateTime": "2025-06-25"
}
],
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "active",
"display": "Active"
}
],
"text": "Active"
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
"code": "confirmed",
"display": "Confirmed"
}
],
"text": "Confirmed"
},
"category": [
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/condition-category",
"code": "health-concern",
"display": "Health Concern"
}
],
"text": "Health Concern"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "cognitive-status",
"display": "Cognitive Status"
}
],
"text": "Cognitive Status"
}
],
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "48167000",
"display": "Amnesia"
}
],
"text": "Amnesia"
},
"subject": {
"reference": "Patient/683cbc02-a96c-4697-b7e6-df0e9391d333",
"display": "Tester, Inferno Official"
},
"encounter": {
"reference": "Encounter/1210"
},
"onsetDateTime": "2025-01-01",
"recordedDate": "2025-06-25"
}
}
{
"resource": {
"resourceType": "Condition",
"id": "hc-852",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns"
]
},
"clinicalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "resolved",
"display": "Resolved"
}
],
"text": "Resolved"
},
"verificationStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
"code": "confirmed",
"display": "Confirmed"
}
],
"text": "Confirmed"
},
"category": [
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/condition-category",
"code": "health-concern",
"display": "Health Concern"
}
],
"text": "Health Concern"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "sdoh",
"display": "SDOH"
}
],
"text": "SDOH"
}
],
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "105529008",
"display": "Lives alone (finding)"
}
],
"text": "Lives alone (finding)"
},
"subject": {
"reference": "Patient/e29bb180-c4b8-4c29-9487-73742bf6e315",
"display": "Patient, Another Demo"
},
"encounter": {
"reference": "Encounter/720935"
},
"onsetDateTime": "2000-01-01",
"abatementDateTime": "2002-11-11"
}
}
Get
Returns a single Condition result based on the Condition ID.
HTTP Request
GET /r4/Condition/{conditionId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| conditionId | path | The unique identifier for the condition | Yes | 16.8 |
Example: Get a condition problem with an ID of '12'
GET https://select.nextech-api.com/api/r4/Condition/prb-12
Search
Searches for conditions for a single patient
HTTP Requests
GET /r4/Condition?{parameters}POST /r4/Condition/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or body | The official patient identifier acquired from a patient search | Yes | 16.8 |
| _id | query or body | The unique identifier for the condition | No | 16.8 |
| identifier | query or body | The unique identifier for the condition | No | 16.8 |
| _lastUpdated | query or body | The date the condition was last modified, formatted as OOXXXXX where OO is an operator and XXXXX is a date in the form YYYY-MM-DD. | No | 16.8 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each condition |
No | string |
| category | query or body | A category assigned to the condition. | Yes | 19.1 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with conditions
The _revinclude parameter allows support for including Provenance references that match the returned condition.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the condition.
Example: Get a condition problem with an identifier '12' with provenance
GET https://select.nextech-api.com/api/r4/Condition?identifier=prb-12&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Condition/_search body: identifier=prb-12&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Condition?_id=prb-12&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Condition/_search body: _id=prb-12&_revinclude=Provenance:target
Example: Get all conditions for a single patient
GET https://select.nextech-api.com/api/r4/Condition?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
POST https://select.nextech-api.com/api/r4/Condition/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
Example: Get the condition problem with id of 'prb-12'
GET https://select.nextech-api.com/api/r4/Condition?_id=prb-12
GET https://select.nextech-api.com/api/r4/Condition?identifier=prb-12
POST https://select.nextech-api.com/api/r4/Condition/_search body: _id=prb-12
POST https://select.nextech-api.com/api/r4/Condition/_search body: identifier=prb-12
Example: Get all conditions for a single patient that were modified as of 5/5/2022
GET https://select.nextech-api.com/api/r4/Condition?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&_lastUpdated=ge2022-05-05
POST https://select.nextech-api.com/api/r4/Condition/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&_lastUpdated=ge2022-05-05
Example: Get all conditions for a single patient with category encounter-diagnosis
GET https://select.nextech-api.com/api/r4/Condition?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=encounter-diagnosis
POST https://select.nextech-api.com/api/r4/Condition/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=encounter-diagnosis
Example: Get the SDOH Health Concern for a single patient with category health-concern
GET https://select.nextech-api.com/api/r4/Condition?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=health-concern
GET https://select.nextech-api.com/api/r4/Condition?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
POST https://select.nextech-api.com/api/r4/Condition/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&category=health-concern
POST https://select.nextech-api.com/api/r4/Condition/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
Device
Overview
The implantable device resource identifies an instance or type of manufactured item used in the provision of healthcare.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique identifier for the device | string | 16.8 |
| udiCarrier | Unique Device Identifier (UDI) Barcode string | BackboneElement | 16.8 |
| distinctIdentifier | The distinct identification string | string | 16.8 |
| lotNumber | Lot number of manufacturer | string | 16.8 |
| serialNumber | Serial number assigned by the manufacturer | string | 16.8 |
| manufactureDate | Date when the device was made | dateTime | 16.8 |
| expirationDate | Date and time of expiry of this device | dateTime | 16.8 |
| type | The kind or type of device | CodeableConcept | 16.8 |
| patient | The patient pertaining to the device | Reference(US Core Patient Profile) | 16.8 |
Example
{
"resourceType": "Device",
"id": "123",
"udiCarrier": [
{
"deviceIdentifier": "43069338026389",
"carrierHRF": "(01)43069338026389(11)000302(17)250317(10)1134(21)842026117977"
}
],
"distinctIdentifier": "A9971312345600",
"lotNumber": "000000000000XYZ123",
"serialNumber": "842026117977"
"manufactureDate": "2013-02-01T00:00:00Z",
"expirationDate": "2014-02-01T00:00:00Z",
"type": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "714549006",
"display": "Synthetic bone graft (physical object)"
}
],
"text": "Synthetic bone graft (physical object)"
},
"patient": {
"reference": "Patient/ad2085b5-b974-401d-bfcb-3b865109fd35",
"display": "Smith, John"
}
}
Get
Returns a single Device result based on the Device ID.
HTTP Request
GET /r4/Device/{deviceId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| deviceId | path | The unique identifier for the device | Yes | 16.8 |
Example: Get the device with an ID of '123'
GET https://select.nextech-api.com/api/r4/Device/123
Search
Searches for devices for a single patient
HTTP Request
GET /r4/Device?{parameters}POST /r4/Device/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _lastUpdated | query or body | The date the device was last modified, formatted as yyyy-MM-dd. We also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] . Note that the + character must be URL encoded. (i.e. %2B) |
No | 16.8 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.8 |
| date | query or body | The device last update date in the form YYYY-MM-DD | No | 16.8 |
| identifier | query or body | The unique identifier for the device | No | 16.8 |
| _id | query or body | The unique identifier for the device | No | 16.8 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each device |
No | 17.0 |
Note: The possible filter values for the date or _lastUpdated parameters are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with devices
The _revinclude parameter allows support for including Provenance references that match the returned device.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the device.
Example: Get a device with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Device?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Device/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Device?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Device/_search body: _id=123&_revinclude=Provenance:target
Example: Get all devices for a single patient with id 'ad2085b5-b974-401d-bfcb-3b865109fd35'
GET https://select.nextech-api.com/api/r4/Device?patient=ad2085b5-b974-401d-bfcb-3b865109fd35
GET https://select.nextech-api.com/api/r4/Device?patient=Patient/ad2085b5-b974-401d-bfcb-3b865109fd35
POST https://select.nextech-api.com/api/r4/Device/_search body: patient=ad2085b5-b974-401d-bfcb-3b865109fd35
Example: Get all devices for a single patient with id 'ad2085b5-b974-401d-bfcb-3b865109fd35' that were recorded as of 1/1/2017
GET https://select.nextech-api.com/api/r4/Device?patient=ad2085b5-b974-401d-bfcb-3b865109fd35&date=ge2017-01-01
GET https://select.nextech-api.com/api/r4/Device?patient=Patient/ad2085b5-b974-401d-bfcb-3b865109fd35&date=ge2017-01-01
POST https://select.nextech-api.com/api/r4/Device/_search body: patient=ad2085b5-b974-401d-bfcb-3b865109fd35&date=ge2017-01-01
GET https://select.nextech-api.com/api/r4/Device?patient=ad2085b5-b974-401d-bfcb-3b865109fd35&_lastUpdated=ge2017-01-01
POST https://select.nextech-api.com/api/r4/Device/_search body: patient=ad2085b5-b974-401d-bfcb-3b865109fd35&_lastUpdated=ge2017-01-01
Search for a device with the id '123'
GET https://select.nextech-api.com/api/r4/Device?identifier=123
POST https://select.nextech-api.com/api/r4/Device/_search body: identifier=123
GET https://select.nextech-api.com/api/r4/Device?_id=123
POST https://select.nextech-api.com/api/r4/Device/_search body: _id=123
DocumentReference
Overview
A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), clinical notes, scanned paper, and non-patient specific documents like policy text.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique id string assigned to each documentreference | string | 16.7 |
| identifier | The unique identifier assigned to each documentreference | Identifier | 16.7 |
| status | Specifies the status of the document reference | Code | 16.7 |
| type | Specifies the particular kind of document referenced (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced. LOINC Code if possible | CodeableConcept | 16.8 |
| category | The categorization for the document reference | CodeableConcept | 16.7 |
| subject | The patient pertaining to the documentreference | Reference (US Core Patient Profile) | 16.7 |
| date | document creation time (in UTC) | dateTime | 16.7 |
| author | Identifies who is responsible for the information in the document reference | Reference (US Core Practitioner Profile) | 16.7 |
| description | The description of the documentreference | string | 16.7 |
| content.format | An identifier of the document encoding, structure, and template that the document conforms to | Coding | 16.7 |
| content.attachment.contentType | The mimetype of the content. | Code | 16.7 |
| content.attachment.data | The base64 encoded data of the attachment. | base64Binary | 16.7 |
| content.attachment.url | The url to retrieve the data from the binary endpoint | url | 17.0 |
| content.attachment.title | The title of the document | string | 16.7 |
| extension: note-category | Contains the category of the document | string | 16.7 |
| extension: document-publish-portal | Contains whether the document is published to myPatientVisit | boolean | 16.7 |
| context.encounter | The clinical context in which the document was prepared. | Reference (US Core Encounter Profile) | 16.8 |
| context.period | The time period over which the service that is described by the document was provided | Period | 16.7 |
| custodian | Identifies the organization or group who is responsible for ongoing maintenance of and access to the document. | Reference (US Core Organization Profile) | 16.8 |
Example
{
"resourceType": "DocumentReference",
"id": "history-2262",
"identifier": [
{
"use": "official",
"value": "history-2262"
}
],
"status": "current",
"type": {
"coding": [
{
"system": "http://loinc.org",
"code": "18842-5",
"display": "Discharge Summary"
}
],
"text": "Discharge Summary"
},
"category": [
{
"coding": [
{
"system": "https://select.nextech-api.com/api/structuredefinition/note-category",
"code": "Prescriptions",
"display": "Prescriptions"
}
],
"text": "Prescriptions"
}
],
"subject": {
"reference": "Patient/c21ab936-3a2a-4c5a-81b8-76b120194053",
"display": "White, Nicole Francis"
},
"date": "2022-06-02T17:11:23.943+00:00",
"author": [
{
"reference": "Organization/22",
"display": "Clinic One"
}
],
"custodian": {
"reference": "Organization/22",
"display": "Clinic One"
},
"content": [
{
"attachment": {
"contentType": "text/plain",
"url": "Binary/history-125369",
"title": "small text doc.txt"
},
"format": {
"system": "urn:oid:1.3.6.1.4.1.19376.1.2.3",
"code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
"display": "mimeType Sufficient"
}
}
],
"context": {
"encounter": [
{
"reference": "Encounter/6",
"display": "Encounter Name"
}
],
"period": {
"start": "2022-06-02T17:11:23.943+00:00",
"end": "2022-06-02T17:11:23.943+00:00"
}
}
}
Get By ID
Finds a single document based on the ID
HTTP Request
GET /r4/DocumentReference/{documentType-id}
Parameters
| Name | Description | Required | Initial Version |
|---|---|---|---|
| documentType-id | Must be in the form documenttype-id i.e: GET /r4/DocumentReference/history-5 |
Yes | 16.8 |
Supported Document Types
The supported document type specifiers for IDs are history-{id} and emn-{id}.
Example: Get the history document with ID 2262 which is a text file with a content of "Hello!"
GET https://select.nextech-api.com/api/r4/DocumentReference/history-2262
Search
Finds a bundle of documents based on the search parameters
HTTP Request
GET /r4/DocumentReference?{parameters}POST /r4/DocumentReference/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _id | query or body | Unique ID of the document | No | 16.8 |
| identifier | query or body | Unique ID of the document | No | 16.8 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each document reference |
No | 17.0 |
| patient | query or body | The ID of the patient associated with the document | No | 16.9 |
| category | query or body | The category of the document | No | 16.9 |
| date | query or body | This searches based on the created date of the document, either a specific date or a range depending on search modifiers | No | 16.9 |
| type | query or body | The type of the document | No | 16.9 |
Note: The possible filter values for the date parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with document references
The _revinclude parameter allows support for including Provenance references that match the returned document references.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the document reference
Example: Get a history document reference with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/DocumentReference?identifier=history-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/DocumentReference/_search body: identifier=history-123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/DocumentReference?_id=history-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/DocumentReference/_search body: _id=history-123&_revinclude=Provenance:target
Example: Get the history document with ID 7741
GET https://select.nextech-api.com/api/r4/DocumentReference?_id=history-7741
Example: Searching for all documents that have a type of 11488-4, category of Unknown, created on 2022-06-03 for the specific patient
GET https://select.nextech-api.com/api/r4/DocumentReference?type=11488-4&category=Unknown&date=2022-06-03&patient=c21ab936-3a2a-4c5a-81b8-76b120194053
Example: Search for all documents that were created between 2020-06-03 and 2022-06-01
GET https://select.nextech-api.com/api/r4/DocumentReference?date=gt2020-06-03&date=lt2022-06-01
Example Search by _id in POST Body
POST https://select.nextech-api.com/api/r4/DocumentReference/_search body: _id:history-2262
Example Searching for all documents that have a type of 11488-4, category of Clinical, created before 2022-06-03 for the specific patient
POST https://select.nextech-api.com/api/r4/DocumentReference/_search body: type:11488-4 category:Clinical date:lt2022-06-03 patient:c21ab936-3a2a-4c5a-81b8-76b120194053
Create
Creates the document in the provided content.attachment POST body field for a patient, and attaches it to the patient's history tab in the Nextech software.
HTTP Request
POST /r4/DocumentReference
Body Fields
| Name | Description | Required | Initial Version |
|---|---|---|---|
| resourceType | Must be DocumentReference |
Yes | 16.8 |
| type | Specifies the particular kind of document referenced (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced. LOINC Code if possible | Yes | 16.8 |
| category | Allows setting category of the document | No | 16.8 |
| date | The date (in UTC) of the composition. ie. 2017-10-16T20:32:28.9692476Z |
No | 16.8 |
| author.display | The name of the author. This will be appended to the beginning of the description value. | No | 16.8 |
| description | A description of the document | No | 16.8 |
| content.attachment.contentType | The mimetype of the document. See Allowed Mimetypes below | Yes | 16.8 |
| content.attachment.data | The base64 data of the document | Yes | 16.8 |
| content.attachment.title | The title of the document, will be used as the filename | Yes | 16.8 |
| extension: note-category | Allows setting category of the document | No | 16.8 |
| extension: document-publish-portal | Allows setting whether or not to publish the document to myPatientVisit. Note: Must be licensed for myPatientVisit and have permission to publish EMNs to MPV to work | No | 16.8 |
Extension: note-category
This is a custom extension to allow the setting of the category on the document. This must match with an existing note category or is left blank. There can be only one note-category extension.
Note: This custom extension should not be used, instead category is encouraged.
When category is supplied, only the first coding will be used. Any others will be ignored.
When both category and the this extension are used, the NexTech extension will be used instead of the category.
Extension system url: https://select.nextech-api.com/api/structuredefinition/note-category
valueString: <name of Nextech note category>
Extension: document-publish-portal
This is a custom extension to allow publishing of a document to myPatientVisit. The client must be licensed for myPatientVisit and the caller must have permission to publish EMNs to MPV, otherwise the document will not be published. There can be only one document-publish-portal extension. If this extension is not included in the POST, the document is not published to myPatientVisit.
Extension system url: https://select.nextech-api.com/api/structuredefinition/document-publish-portal
valueBoolean: true or false
Example: Attach a new document for a patient
POST https://select.nextech-api.com/api/r4/DocumentReference
Body
Note: The note-category NexTech extension should not be used, instead the FHIR category POST body member is encouraged
When the FHIR category POST body member is supplied, only the first coding will be used. Any others will be ignored.
When both the FHIR category and the note-category NexTech extension POST body members are used, the NexTech extension will be used instead of the FHIR category value
{
"resourceType": "DocumentReference",
"type": {
"coding": [
{
"system": "http://loinc.org",
"code": "18842-5",
"display": "Discharge Summary"
}
],
"text": "Discharge Summary"
},
"category": [
{
"coding": [
{
"system": "https://select.nextech-api.com/api/structuredefinition/note-category",
"code": "Prescriptions",
"display": "Prescriptions"
}
],
"text": "Prescriptions"
}
],
"subject": {
"reference": "Patient/9CFE7258-8F50-45E8-9732-6433976CC164"
},
"content": [{"attachment": {
"contentType": "text/plain",
"data": "Tm8gYWN0aXZpdHkgcmVzdHJpY3Rpb24sIHJlZ3VsYXIgZGlldCwgZm9sbG93IHVwIGluIHR3byB0byB0aHJlZSB3ZWVrcyB3aXRoIHByaW1hcnkgY2FyZSBwcm92aWRlci4="
} }],
"context": {"encounter": {"reference": "Encounter/1"} },
"extension": [
{
"url": "https://select.nextech-api.com/api/structuredefinition/note-category",
"valueString": "Past Medical History"
},
{
"url": "https://select.nextech-api.com/api/structuredefinition/document-publish-portal",
"valueBoolean": "true"
}
],
}
$docref operation
This generates a CCDA for the given patient and attaches it to their patient history if no Summary of Care has been previously generated for the relevant encounters.
Otherwise, this returns the most recent CCDA Summary of Care document generated for each encounter.
If only patient is specified, then it will return one (1) Summary of Care document reference record for the latest encounter.
If patient and a date range are specified (start, end, start+end), then it will return one document reference for each encounter that falls within that range.
HTTP Request
POST /r4/DocumentReference/$docref
Body Fields
| Name | Description | Required | Initial Version |
|---|---|---|---|
| resourceType | Must be Parameters |
Yes | 16.9 |
| parameter | This is an array of parameters which must include one patient parameter | Yes | 16.9 |
| parameter.patient | The patient the document is for | Yes | 16.9 |
| parameter.start | The start date for EMN encounters | No | 16.9 |
| parameter.end | the end date for EMN encounters | No | 16.9 |
Example: Generating a CCDA for patient with an ID of C21AB936-3A2A-4C5A-81B8-76B120194053 via POST
POST https://select.nextech-api.com/api/r4/DocumentReference/$docref
Body
{
"resourceType": "Parameters",
"parameter": [
{
"name": "patient",
"valueId" : "C21AB936-3A2A-4C5A-81B8-76B120194053"
},
{
"name": "start",
"valueDateTime": "2022-02-23T08:00:00"
},
{
"name": "end",
"valueDateTime": "2022-02-24T08:00:00"
}
]
}
Note: The start and end parameters can be either of type valueDateTime as above, or simply valueDate and passing only values such as 2022-02-23
HTTP Request
GET /r4/DocumentReference/$docref?{patient}[&{start}][&{end}]
Parameters
| Name | Description | Required | Initial Version |
|---|---|---|---|
| patient | Must be in the form {patient GUID} i.e: patient=C21AB936-3A2A-4C5A-81B8-76B120194053 |
Yes | 16.9 |
| start | Must be in the form of either 2022-02-23T08:00:00 or 2022-02-23 |
No | 16.9 |
| end | Must be in the form of either 2022-02-24T08:00:00 or 2022-02-24 |
No | 16.9 |
Note: Despite being a GET request, if an encounter that falls within the date range (if supplied) or the most recent encounter does not have a CCDA Summary of Care document previously generated, this request will cause one to be created and attached to the patient's document history
Example: Generating a CCDA for patient with an ID of C21AB936-3A2A-4C5A-81B8-76B120194053 via GET
GET https://select.nextech-api.com/api/r4/DocumentReference/$docref?patient=C21AB936-3A2A-4C5A-81B8-76B120194053
Response
{
"resourceType": "Bundle",
"type": "searchset",
"total": 1,
"entry": [
{
"resource": {
"resourceType": "DocumentReference",
"identifier": [
{
"use": "official",
"value": "history-2263"
}
],
"status": "current",
"type": {
"coding": [
{
"system": "http://loinc.org",
"code": "34133-9",
"display": "Summarization of Episode Note"
}
],
"text": "Summarization of Episode Note"
},
"category": [
{
"coding": [
{
"system": "https://select.nextech-api.com/api/structuredefinition/note-category",
"code": "clinical",
"display": "Clinical Note"
}
],
"text": "Clinical Note"
}
],
"subject": {
"reference": "Patient/c21ab936-3a2a-4c5a-81b8-76b120194053",
"display": "White, Nicole Francis"
},
"date": "2022-06-02T13:26:26.2198865-04:00",
"author": [
{
"reference": "Organization/1",
"display": "Pawtucket Plastic Surgeons"
}
],
"custodian": {
"reference": "Organization/1",
"display": "Pawtucket Plastic Surgeons"
},
"content": [
{
"attachment": {
"contentType": "application/xml",
"url": "Binary/history-125369"
},
"format": {
"system": "urn:oid:1.3.6.1.4.1.19376.1.2.3",
"code": "urn:hl7-org:sdwg:ccda-structuredBody:2.1",
"display": "Documents following C-CDA constraints using a structured body"
}
}
],
"context": {
"encounter": [
{
"reference": "Encounter/8109",
"display": "MUS2"
}
],
"period": {
"start": "2022-06-02T13:26:26.2198865-04:00",
"end": "2022-06-02T13:26:26.2198865-04:00"
}
}
}
}
]
}
Allowed Mimetypes
The following mimetypes are currently supported:
| Document Type | MimeType |
|---|---|
| application/pdf | |
| Microsoft Word | application/msword |
| Microsoft Excel | application/vnd.ms-excel or application/vnd.ms-excel.12 |
| Tif Image files | application/tif, application/tiff, or image/tiff |
| HTML | text/html |
| Text | text/plain |
| XML | text/xml |
| BMP Image | image/bmp |
| GIF Image | image/gif |
| JPG Image | image/jpeg |
| PNG Image | image/png or image/x-png |
Encounter
Overview
The Encounter resource describes an interaction between a patient and healthcare provider.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each encounter which discerns them from all others | string | 16.9 |
| identifier | The unique value assigned to each encounter which discerns them from all others | Identifier | 16.9 |
| status | The current state of the encounter (either in-progress, finished, or unknown) |
code with encounter status value set | 16.9 |
| class | The classification of the encounter | Coding | 16.9 |
| type | The specific type of the encounter | CodeableConcept | 16.9 |
| subject | The patient pertaining to the encounter | Reference(US Core Patient Profile) | 16.9 |
| participant | The medical professionals involved in the encounter | BackboneElement | 16.9 |
| period | The start and end date of the encounter in the form YYYY-MM-DD | period | 16.9 |
| reasonCode | The coded reason the encounter took place | CodeableConcept | 16.9 |
| hospitalization.dischargeDisposition | Category or kind of location after discharge | CodeableConcept | 16.9 |
| location.location | Location the encounter took place at | Reference(US Core Location Profile) | 16.9 |
| meta.lastUpdated | The last time the encounter was updated | instant | 16.9 |
Example
{
"resourceType": "Encounter",
"id": "19632",
"meta": {
"lastUpdated": "2022-07-20T09:41:50.82-04:00"
},
"identifier": [
{
"use": "official",
"system": "https://select.nextech-api.com/api/structuredefinition/encounter-id",
"value": "19632"
}
],
"status": "in-progress",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "AMB",
"display": "ambulatory"
},
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/data-absent-reason",
"code": "unknown",
"display": "Unknown"
}
],
"text": "Unknown"
}
],
"subject": {
"reference": "Patient/2ab530e0-9606-4f7a-8b67-e2de253ba80b",
"display": "Smith, John"
},
"participant": [
{
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
"code": "PRF",
"display": "performer"
}
],
"text": "performer"
}
],
"period": {
"start": "2022-04-22",
"end": "2022-04-22"
},
"individual": {
"reference": "Practitioner/123",
"display": "1, Doctor"
}
},
{
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
"code": "PRF",
"display": "performer"
}
],
"text": "performer"
}
],
"period": {
"start": "2022-04-22",
"end": "2022-04-22"
},
"individual": {
"reference": "Practitioner/124",
"display": "2, Doctor"
}
},
{
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
"code": "PRF",
"display": "performer"
}
],
"text": "performer"
}
],
"period": {
"start": "2022-04-22",
"end": "2022-04-22"
},
"individual": {
"reference": "Practitioner/125",
"display": "3, Doctor"
}
},
{
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
"code": "PRF",
"display": "performer"
}
],
"text": "performer"
}
],
"period": {
"start": "2022-04-22",
"end": "2022-04-22"
},
"individual": {
"reference": "Practitioner/126",
"display": "4, Doctor"
}
}
],
"period": {
"start": "2022-04-22",
"end": "2022-04-22"
},
"reasonCode": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/data-absent-reason",
"code": "unknown",
"display": "Unknown"
}
],
"text": "Unknown"
}
],
"hospitalization": {
"dischargeDisposition": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/data-absent-reason",
"code": "unknown",
"display": "Unknown"
}
],
"text": "Unknown"
}
},
"location": [
{
"location": {
"reference": "Location/1",
"display": "Pawtucket Plastic Surgeons"
}
}
]
}
Get
Returns a single Encounter result based on the Encounter ID.
HTTP Request
GET /r4/Encounter/{encounterID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| encounterID | path | The encounter unique identifier | Yes | 16.9 |
Example: Get an encounter with an ID of '123'
GET https://select.nextech-api.com/api/r4/Encounter/123
Search
Returns encounters based on the provided search parameters.
HTTP Requests
GET /r4/Encounter?{parameters}POST /r4/Encounter/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _lastUpdated | query or body | The date the encounter was last modified, formatted as yyyy-MM-dd. We also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] . Note that the + character must be URL encoded. (i.e. %2B) |
No | 16.9 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.9 |
| date | query or body | The date the encounter took place in the form YYYY-MM-DD | No | 16.9 |
| identifier | query or body | The encounter unique identifier | No | 16.9 |
| _id | query or body | The encounter unique identifier | No | 16.9 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each encounter |
No | 17.0 |
Note: The possible filter values for the date or _lastUpdated parameters are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with encounters
The _revinclude parameter allows support for including Provenance resources that match the returned encounters.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the encounter.
Example: Get an encounter with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Encounter?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Encounter/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Encounter?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Encounter/_search body: _id=123&_revinclude=Provenance:target
Examples:
Get all encounters
GET https://select.nextech-api.com/api/r4/Encounter
Search for encounters for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192'
GET https://select.nextech-api.com/api/r4/Encounter?patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
POST https://select.nextech-api.com/api/r4/Encounter/_search body: patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
Search for encounters for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' that took place between and including 1/1/2022 through 11/14/2022
GET https://select.nextech-api.com/api/r4/Encounter?patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
POST https://select.nextech-api.com/api/r4/Encounter/_search body: patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
Search for an Encounter with the id '123'
GET https://select.nextech-api.com/api/r4/Encounter?identifier=123
POST https://select.nextech-api.com/api/r4/Encounter/_search body: identifier=123
GET https://select.nextech-api.com/api/r4/Encounter?_id=123
POST https://select.nextech-api.com/api/r4/Encounter/_search body: _id=123
Goal
Overview
The goal resource describes a desired state of health for a patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| identifier | The unique value assigned to each goal which discerns them from all others. | Identifier | 17.0 |
| id | The unique value assigned to each goal which discerns them from all others. | string | 17.0 |
| lifeCycleStatus | The intended objective(s) for a patient | code using Goal Lifecycle Status value set | 17.0 |
| description | Code or text describing the goal | CodeableConcept | 17.0 |
| subject | The patient pertaining to the goal | Reference(US Core Patient Profile) | 17.0 |
| target | The target outcome of the goal | BackboneElement | 17.0 |
| target.dueDate | The date to reach the goal on or before | date | 17.0 |
| meta.lastUpdated | The last time the goal was modified | instant | 17.0 |
Example
{
"resourceType": "Goal",
"id": "goalemn-2284code-559215",
"meta": {
"lastUpdated": "2022-08-05T14:29:08.217-04:00"
},
"identifier": [
{
"use": "official",
"value": "goalemn-2284code-559215"
}
],
"lifecycleStatus": "active",
"description": {
"coding": [
{
"system": "http://loinc.org",
"code": "386661006",
"display": "Fever"
}
],
"text": "In case of high fever, take Tylenol as needed"
},
"subject": {
"reference": "Patient/F15FB185-5E63-485E-B025-D113103DCEC3",
"display": "Smith, Jane"
},
"target": {
"measure": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA7435-6"
}
],
"text": "Fever"
}
}
}
Get
Returns a single Goal based on the goal's ID.
HTTP Request
GET r4/Goal/{GoalID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| GoalID | path | The official goal identifier acquired from a goal search | Yes | 17.0 |
Example: Get a goal with ID 'goalemn-2284code-559215'
GET https://select.nextech-api.com/api/r4/Goal/goalemn-2284code-559215
Search
Searches for goals for a single patient
HTTP Requests
GET /r4/Goal?{parameters}POST /r4/Goal/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body | The goal identifier | No | 17.0 |
| _id | query or body | The goal identifier | No | 17.0 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 17.0 |
| date | query or body | The date of the encounter containing the goal in the form YYYY-MM-DD | No | 17.0 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each goal |
No | 17.0 |
| _lastUpdated | query or body | The date a goal was last modified | No | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with goals
The _revinclude parameter allows support for including Provenance references that match the returned goal.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the goal.
Example: Get a goal with an identifier 'goalemn-2284code-559215' with provenance
GET https://select.nextech-api.com/api/r4/Goal?identifier=goalemn-2284code-559215&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Goal/_search body: identifier=goalemn-2284code-559215&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Goal?_id=goalemn-2284code-559215&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Goal/_search body: _id=goalemn-2284code-559215&_revinclude=Provenance:target
Example: Get all goals for a single patient
GET https://select.nextech-api.com/api/r4/Goal?patient=29D5AA40-6E3E-4683-B17F-2FBFECACF9BC
Example: Get all goals for a single patient, using a Patient/ reference prefix
GET https://select.nextech-api.com/api/r4/Goal?patient=Patient/29D5AA40-6E3E-4683-B17F-2FBFECACF9BC
Example: Get all goals for a patient on a date
GET https://select.nextech-api.com/api/r4/Goal?patient=29D5AA40-6E3E-4683-B17F-2FBFECACF9BC&date=2017-01-01
Example: Get all goals for a patient on a date
POST https://select.nextech-api.com/api/r4/Goal/_search?patient=29D5AA40-6E3E-4683-B17F-2FBFECACF9BC&date=2017-01-01
Immunization
Overview
The Immunization resource describes an administered vaccine.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 16.7 |
| identifier | The unique value assigned to each immunization which discerns them from all others. | Identifier | 16.7 |
| status | Either completed or not-done |
code with immunization status value set | 16.7 |
| statusReason | Reason that an immunization event was not performed, if any | CodeableConcept using Substance Refusal Reason (NIP) value set | 16.7 |
| vaccineCode | Vaccine product administered | CodeableConcept using vaccine administered value set | 16.7 |
| patient | The immunized patient | Reference (US Core Patient Profile) | 16.7 |
| occurrenceDateTime | The vaccination administration date in the form YYYY-MM-DD | dateTime | 16.7 |
| primarySource | Whether or not the information is from the person who administered the vaccine | boolean | 16.7 |
| meta.lastUpdated | The last time the immunization was updated | instant | 16.7 |
Example
{
"resourceType": "Immunization",
"id": "123",
"meta":
{
"lastUpdated": "2022-04-02T14:04:35.9+00:00"
},
"identifier": [
{
"use": "official",
"value": "123"
}
],
"status": "completed",
"vaccineCode": {
"coding": [
{
"system": "http://hl7.org/fhir/sid/cvx",
"code": "05",
"display": "measles virus vaccine"
}
],
"text": "measles virus vaccine"
},
"patient": {
"reference": "Patient/4AAE9E3C-B1E4-46EA-93C2-CF3B36747D1A",
"display": "Tinsley, Carol F"
},
"occurrenceDateTime": "2013-08-17",
"primarySource" : true
}
Get
Returns a single Immunization result based on the Immunization ID.
HTTP Request
GET /r4/Immunization/{immunizationID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| immunizationID | path | The immunization unique identifier | Yes | 16.7 |
Example: Get an immunization with an ID of '123'
GET https://select.nextech-api.com/api/r4/Immunization/123
Search
Returns immunizations based on the provided search parameters.
HTTP Requests
GET /r4/Immunization?{parameters}POST /r4/Immunization/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _lastUpdated | query or body | The date the patient was last modified, formatted as yyyy-MM-dd. We also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] . Note that the + character must be URL encoded. (i.e. %2B) |
No | 16.7 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.7 |
| date | query or body | The date the immunization was administered in the form YYYY-MM-DD | No | 16.7 |
| identifier | query or body | The immunization unique identifier | No | 16.7 |
| _id | query or body | The immunization unique identifier | No | 16.7 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each immunization |
No | 17.0 |
Note: The possible filter values for the date or _lastUpdated parameters are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with immunizations
The _revinclude parameter allows support for including Provenance references that match the returned immunizations.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the immunization.
Example: Get an immunization with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Immunization?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Immunization/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Immunization?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Immunization/_search body: _id=123&_revinclude=Provenance:target
Examples:
Get all immunizations
GET https://select.nextech-api.com/api/r4/Immunization
Search for immunizations for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192'
GET https://select.nextech-api.com/api/r4/Immunization?patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
POST https://select.nextech-api.com/api/r4/Immunization/_search body: patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
Search for immunizations for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' administered between and including 1/1/2022 through 11/14/2022
GET https://select.nextech-api.com/api/r4/Immunization?patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
POST https://select.nextech-api.com/api/r4/Immunization/_search body: patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
Search for an immunization with the id '123'
GET https://select.nextech-api.com/api/r4/Immunization?identifier=123
POST https://select.nextech-api.com/api/r4/Immunization/_search body: identifier=123
GET https://select.nextech-api.com/api/r4/Immunization?_id=123
POST https://select.nextech-api.com/api/r4/Immunization/_search body: _id=123
Diagnostic Report
Overview
A diagnostic report resource describes the findings and interpretation of diagnostic tests performed on patients and/or specimens derived from these. There are two types of diagnostic reports that can be returned:
- Diagnostic reports for laboratory specimens
- Diagnostic reports containing result documents for laboratory specimens
These types of laboratory reports are denoted by their category. Diagnostic reports for laboratory specimens will always have a category of "LAB", while reports containing result documents will have a the document's assigned LOINC code as their category. For example, "LP29684-5" would be the category for a radiology document report.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 16.9 |
| identifier | The unique value assigned to each diagnostic report which discerns them from all others. | Identifier | 16.9 |
| status | The status of the diagnostic report | code with DiagnosticReportStatus | 16.9 |
| category | Classification of type of diagnostic report | Category using Diagnostic Service Section Codes | 16.9 |
| code | A code that describes the diagnostic report | LOINC Diagnostic Report Codes | 16.9 |
| subject | The patient pertaining to the diagnostic report | Reference (US Core Patient Profile) | 16.9 |
| effectiveTime | The date and time of specimen collection | dateTime | 16.9 |
| issued | The date and time that this version of the report was made available to providers | dateTime | 16.9 |
| performer | The provider who is responsible for issuing the report | Reference (US Core Practitioner Profile) | 16.9 |
| encounter | The healthcare event which this diagnostic report is about | Reference(US Core Encounter Profile) | 16.9 |
| result | A reference to the related lab result observations | Reference (US Core Observation Lab Profile) | 16.9 |
| presentedForm | A document attachment containing lab result data for the report | Attachment | 16.9 |
| presentedForm.url | The url to retrieve the data from the binary endpoint | url | 17.0 |
Example
{
"resourceType":"DiagnosticReport",
"id":"244",
"identifier":[
{
"use":"official",
"value":"244"
},
{
"use":"usual",
"value":"XY202200011 - A"
}
],
"status":"registered",
"category":[
{
"coding":[
{
"system":"http://terminology.hl7.org/CodeSystem/v2-0074",
"code":"LAB"
}
]
}
],
"code":{
"coding":[
{
"system":"http://loinc.org",
"code":"11268-0",
"display":"S pyog Throat Ql Cult"
}
],
"text":"S pyog Throat Ql Cult"
},
"subject":{
"reference":"Patient/C56936DF-FED7-4EFA-8998-2A9848C99631"
},
"effectiveDateTime":"2022-06-24T00:00:00-04:00",
"issued":"2022-06-24T00:00:00-04:00",
"performer":[
{
"reference":"Practitioner/9149",
"display":"Smith, Susan"
}
],
"result":[
{
"reference":"Observation/442",
"display":""
}
]
}
Get
Returns a single DiagnosticReport result based on the DiagnosticReport ID.
HTTP Request
GET /r4/DiagnosticReport/{diagnosticReportID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| diagnosticReportID | path | The diagnostic report unique identifier | Yes | 16.9 |
Example: Get a diagnostic report with an ID of '123'
GET https://select.nextech-api.com/api/r4/DiagnosticReport/123
Search
Returns diagnostic reports based on the provided search parameters
HTTP Request
GET /r4/DiagnosticReport?{parameters}POST /r4/DiagnosticReport/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body or path | The diagnostic report identifier | No | 16.9 |
| _id | query or body or path | The diagnostic report identifier | No | 16.9 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.9 |
| category | query or body | The category of the diagnostic report by either "LAB" or code ie. category=LP29684-5 or by token ie. category=http://terminology.hl7.org/CodeSystem/v2-0074|LP29684-5 | No | 16.9 |
| date | query or body | The diagnostic report date in the form YYYY-MM-DD | No | 16.9 |
| code | query or body | The loinc code of the diagnostic report by code ie. code=49765-1 or token ie. code=http://loinc.org|49765-1 | No | 16.9 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each diagnostic report |
No | 17.0 |
Note: The possible filter values for the date parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with diagnostic reports
The _revinclude parameter allows support for including Provenance references that match the returned diagnostic reports.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the diagnostic report.
Example: Get a diagnostic report with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/DiagnosticReport?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/DiagnosticReport/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/DiagnosticReport?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/DiagnosticReport/_search body: _id=123&_revinclude=Provenance:target
Example: Get all lab-type diagnostic reports on or after 5/1/2017
GET https://select.nextech-api.com/api/r4/DiagnosticReport?category=LAB&date=ge2017-05-01
POST https://select.nextech-api.com/api/r4/DiagnosticReport/_search body: category=LAB&date=ge2017-05-01
Specimen
Overview
The Specimen resource contains information about the specimen type and patient for a specific laboratory requisition.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 19.1 |
| identifier | The unique value assigned to each specimen which discerns them from all others. | Identifier | 19.1 |
| type | Kind of material that forms the specimen | Type using Specimen Codes | 19.1 |
| subject | The patient where the specimen came from. | Reference (US Core Patient Profile) | 19.1 |
Example
{
"resourceType":"Specimen",
"id":"54",
"identifier": [
{
"use": "official",
"value": "54"
}
],
"type":[
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "119376003",
"display": "Tissue specimen (specimen)"
}
],
"text": "Tissue specimen (specimen)"
}
],
"subject":{
"reference":"Patient/C56936DF-FED7-4EFA-8998-2A9848C99631"
}
}
Example: Get all specimens associated with a specific lab
GET https://select.nextech-api.com/api/r4/Specimen
Get
Returns a single Specimen result based on the Specimen ID.
HTTP Request
GET /r4/Specimen/{SpecimenID}
Example: Get a Specimen with an SpecimenID of '21'
GET https://select.nextech-api.com/api/r4/Specimen/21
Search
Returns specimens based on the provided search parameters
HTTP Request
GET /r4/Specimen?{parameters}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body or path | The specimen identifier | No | 19.1 |
| _id | query or body or path | The specimen identifier | No | 19.1 |
ServiceRequest
Overview
The ServiceRequest resource represents a clinical order or plan for a patient, such as a laboratory test, imaging study, or procedure.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 19.2 |
| identifier | Business identifiers assigned to this request. | Identifier | 19.2 |
| status | The status of the request (e.g., active, completed). | code | 19.2 |
| intent | The kind of order (e.g., plan, order). | code | 19.2 |
| category | Classification of the request (lab, imaging, etc.). | CodeableConcept | 19.2 |
| code | What is being requested (test, procedure, service). | CodeableConcept | 19.2 |
| subject | The patient the request is about. | Reference (US Core Patient Profile) | 19.2 |
| encounter | Encounter in which the request was created. | Reference | 19.2 |
| authoredOn | When the request was authored. | dateTime | 19.2 |
| requester | Who/what is requesting the service. | Reference | 19.2 |
| reasonCode | Reason or justification for the request. | CodeableConcept | 19.2 |
Example
{
"resourceType": "ServiceRequest",
"id": "2242",
"text": {
"status": "generated",
"div": "Order for urinalysis (dipstick panel)"
},
"identifier": [
{
"use": "official",
"system": "https://select.nextech-api.com/api/structuredefinition/servicerequest-id",
"value": "2242"
}
],
"status": "completed",
"intent": "order",
"category": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "108252007",
"display": "Laboratory procedure"
}
],
"text": "Laboratory procedure"
}
],
"priority": "routine",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "24357-6",
"display": "Urinalysis dipstick panel - Urine"
}
],
"text": "Urinalysis dipstick panel"
},
"subject": {
"reference": "Patient/315c1ec0-6961-420e-8bd1-fa273cc8e660",
"identifier": {
"system": "https://select.nextech-api.com/api/structuredefinition/patient-uid",
"value": "315c1ec0-6961-420e-8bd1-fa273cc8e660"
},
"display": "Alice Newman"
},
"encounter": {
"reference": "Encounter/927"
},
"authoredOn": "2025-08-19T14:43:36-04:00",
"requester": {
"reference": "Practitioner/17920",
"identifier": {
"system": "https://select.nextech-api.com/api/structuredefinition/practitioner-id",
"value": "17920"
},
"display": "Albert Davis, MD"
},
"reasonCode": [
{
"coding": [
{
"system": "http://hl7.org/fhir/sid/icd-10-cm",
"code": "R33.9",
"display": "Retention of urine, unspecified"
}
],
"text": "R33.9 - Retention of urine, unspecified"
}
]
}
Example: Get all ServiceRequests
GET https://select.nextech-api.com/api/r4/ServiceRequest
Get
Returns a single ServiceRequest result based on the ServiceRequest ID.
HTTP Request
GET /r4/ServiceRequest/{ServiceRequestID}
Example: Get a ServiceRequest with an ID of '2242'
GET https://select.nextech-api.com/api/r4/ServiceRequest/2242
Search
Returns ServiceRequests based on the provided search parameters.
HTTP Request
GET /r4/ServiceRequest?{parameters}POST /r4/ServiceRequest/_search(form-body)
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query, body, or path | The ServiceRequest identifier | No | 19.2 |
| _id | query, body, or path | The ServiceRequest resource ID | No | 19.2 |
| authored | query or body | Date or date range when the request was authored | No | 19.2 |
| patient | query or body | The patient associated with the ServiceRequest | No | 19.2 |
| _revinclude | query or body | Return resources related to the ServiceRequest (e.g., Provenance) | No | 19.2 |
| status | query or body | The status of the request (e.g., active, completed) | No | 19.2 |
Medication Request
Overview
The Medication Request resource can be used to record a patient's medication prescription or order.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource | string | 17.0 |
| status | A code specifying the current state of the medication request | MedicationRequestStatus | 17.0 |
| intent | Whether the request is a proposal, plan, or an original order | MedicationRequestIntent | 17.0 |
| reported | Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record | boolean | 17.0 |
| medication | The supplied medication | CodeableConcept | 17.0 |
| authoredOn | The date and time when the prescription was initially written or authored on | dateTime | 17.0 |
| subject | The patient pertaining to the medication request | Reference (US Core Patient Profile) | 17.0 |
| requester | The individual, organization, or device that initiated the request and has responsibility for its activation | Reference (US Core Practitioner Profile) | 17.0 |
| encounter | The Encounter during which the medication request was created or to which the creation of this record is tightly associated | Reference (US Core Encounter Profile) | 17.0 |
| dosageInstruction | Indicates how the medication is to be used by the patient | Dosage | 17.0 |
| category | Indicates the type of medication request (for example, where the medication is expected to be consumed or administered) | CodeableConcept | 17.2 |
| reasonCode | Reason or indication for ordering or not ordering the medication | CodeableConcept | 19.0 |
| dispenseRequest | Indicates the specific details for the dispense or medication supply part of a medication request | BackboneElement | 19.0 |
Example
{
"resourceType": "MedicationRequest",
"id": "1",
"status": "active",
"intent": "original-order",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category",
"code": "community",
"display": "Community"
}
],
"text": "Community"
}
],
"reportedBoolean": false,
"medicationCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "310964",
"display": "ibuprofen"
}
],
"text": "ibuprofen"
},
"subject": {
"reference": "Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a",
"display": "Newman, Alice Jones"
},
"encounter": {
"reference": "Encounter/1"
},
"authoredOn": "2022-07-06T18:20:39+02:00",
"requester": {
"reference": "Practitioner/84",
"display": "Davis, Albert"
},
"reasonCode": [
{
"coding": [
{
"system": "http://hl7.org/fhir/sid/icd-10-cm",
"code": "R52",
"display": "Pain, unspecified"
}
],
"text": "Pain, unspecified"
}
],
"dosageInstruction": [
{
"text": "1 capsule by mouth twice a day",
"timing": {
"code": {
"text": "1 capsule by mouth twice a day"
}
},
"doseAndRate": [
{
"doseQuantity": {
"value": 1,
"unit": "capsule"
}
}
]
}
],
"dispenseRequest": {
"numberOfRepeatsAllowed": 1,
"quantity": {
"value": 14,
"unit": "capsules"
}
}
}
Get
Returns a single Medication Request result based on the Medication Request ID.
HTTP Request
GET /r4/MedicationRequest/{medicationRequestId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| medicationRequestId | path | The unique identifier for the medication request | Yes | 17.0 |
Example: Get the medication request with an ID of '12'
GET https://select.nextech-api.com/api/r4/MedicationRequest/12
Search
Searches for medication requests for a single patient
HTTP Requests
GET /r4/MedicationRequest?{parameters}POST /r4/MedicationRequest/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or body | The official patient identifier acquired from a patient search | No | 17.0 |
| _id | query or body | The unique identifier for the medication request | No | 17.0 |
| identifier | query or body | The unique identifier for the medication request | No | 17.0 |
| intent | query or body | The intent of the medication request. Ex.: 'original-order' | No | 17.0 |
| status | query or body | The status of the medication request. Ex.: 'active' | No | 17.0 |
| _lastUpdated | query or body | The date the medication request was last modified, formatted as OOXXXXX where OO is an operator and XXXXX is a date in the form YYYY-MM-DD. | No | 17.0 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each medication request |
No | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with medication requests
The _revinclude parameter allows support for including Provenance resources that match the returned medication requests.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the medication request.
Example: Get a medication request with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/MedicationRequest?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/MedicationRequest?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: _id=123&_revinclude=Provenance:target
Example: Get the medication request with an ID of '12'
GET https://select.nextech-api.com/api/r4/MedicationRequest?identifier=12
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: identifier=12
GET https://select.nextech-api.com/api/r4/MedicationRequest?_id=12
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: _id=12
Example: Get all medication requests for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a'
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
Example: Get all medication requests for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a' and intent 'original-order'
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=http://hl7.org/fhir/CodeSystem/medicationrequest-intent|original-order
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=http://hl7.org/fhir/CodeSystem/medicationrequest-intent|original-order
Example: Get all medication requests for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a', intent 'original-order' and status 'active'
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order&status=active
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order&status=http://hl7.org/fhir/CodeSystem/medicationrequest-status|active
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order&status=active
POST https://select.nextech-api.com/api/r4/MedicationRequest/_search body: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&intent=original-order&status=http://hl7.org/fhir/CodeSystem/medicationrequest-status|active
Example: Get all medication requests for a single patient that were modified as of 5/5/2022
GET https://select.nextech-api.com/api/r4/MedicationRequest?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a&_lastUpdated=ge2022-05-05
Example: Get all medication requests that were modified by 5/5/2022
GET https://select.nextech-api.com/api/r4/MedicationRequest?_lastUpdated=le2022-05-05
Medication Dispense
Overview
Medication Dispense State of a medication with regards to dispensing or other activity.(e.g., dispensed, partially dispensed, not dispensed)
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource | string | 19.0 |
| status | A code specifying the current state of the medication dispense | MedicationDispenseStatus | 19.0 |
| medication | The supplied medication | CodeableConcept | 19.0 |
| subject | The patient pertaining to the medication dispense | Reference (USCorePatientProfile) | 19.0 |
| performer | The individual who was performing | BackboneElement (USCorePractitionerProfile) | 19.0 |
| authorizingPrescription | The Medication order that authorizes the dispense | Reference (USCoreMedicationRequestProfile) | 19.0 |
| type | Identifies types of dispensing events | CodeableConcept | 19.0 |
| quantity | Amount dispensed | Quantity | 19.0 |
| whenHandedOver | The date and time when product was given out or mailed (Will be present if the status is "completed") | dateTime | 19.0 |
| dosageInstruction | Indicates how the medication is to be used by the patient | Dosage | 19.0 |
Example
{
"resourceType": "Bundle",
"type": "searchset",
"total": 1,
"entry": [
{
"resource": {
"resourceType": "MedicationDispense",
"id": "1",
"status": "completed",
"medicationCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "310964",
"display": "ibuprofen 500 mg capsule"
}
],
"text": "ibuprofen 500 mg capsule"
},
"subject": {
"reference": "Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a",
"display": "Newman, Alice Jones"
},
"performer": [
{
"actor": {
"reference": "Practitioner/58206",
"display": "Davis, Albert"
}
}
],
"authorizingPrescription": [
{
"reference": "MedicationRequest/5",
"display": "ibuprofen 500 mg capsule"
}
],
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "RF",
"display": "Refill"
}
],
"text": "Refill"
},
"quantity": {
"value": 10,
"unit": "capsule"
},
"whenHandedOver": "2024-07-06T18:20:39+02:00",
"dosageInstruction": [
{
"text": "1 capsule by mouth twice a day"
}
]
}
}
]
}
Get
Returns a single Medication Dispense result based on the Medication Dispense ID.
HTTP Request
GET /r4/MedicationDispense/{medicationDispenseId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| medicationDispenseId | path | The unique identifier for the medication dispense | Yes | 19.0 |
Example: Get the medication dispense with an ID of '10'
GET https://select.nextech-api.com/api/r4/MedicationDispense/10
Search
Searches for medication dispenses for a single patient
HTTP Requests
GET /r4/MedicationDispense?{parameters}POST /r4/MedicationDispense/_search- application/x-www-form-urlencoded payload:
{parameters}> Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
- application/x-www-form-urlencoded payload:
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or payload | The official patient identifier acquired from a patient search | No | 19.0 |
| _id | query or payload | The unique identifier for the medication dispense | No | 19.0 |
| identifier | query or payload | The unique identifier for the medication dispense | No | 19.0 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each medication dispense |
No | 19.0 |
Retrieve Provenance with medication dispense
The _revinclude parameter allows support for including Provenance resources that match the returned medication dispenses.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the medication dispense.
Example: Get a medication dispense with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/MedicationDispense?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/MedicationDispense/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/MedicationDispense?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/MedicationDispense/_search body: _id=123&_revinclude=Provenance:target
Example: Get the medication dispense with an ID of '12'
GET https://select.nextech-api.com/api/r4/MedicationDispense?identifier=10
POST https://select.nextech-api.com/api/r4/MedicationDispense/_search payload: identifier=10
GET https://select.nextech-api.com/api/r4/MedicationDispense?_id=10
POST https://select.nextech-api.com/api/r4/MedicationDispense/_search payload: _id=10
Example: Get all medication dispenses for a single patient with id 'c27e5be0-4b44-4ec5-a284-4308d6ac2b1a'
GET https://select.nextech-api.com/api/r4/MedicationDispense?patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
GET https://select.nextech-api.com/api/r4/MedicationDispense?patient=Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
POST https://select.nextech-api.com/api/r4/MedicationDispense/_search payload: patient=c27e5be0-4b44-4ec5-a284-4308d6ac2b1a
Observation
Overview
An observation resource describes a measurement or an assertion made about a patient. The following category codes are supported:
- laboratory
- social-history
- vital-signs
- imaging
- survey
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| identifier | The unique value assigned to each observation which discerns them from all others. | Identifier | 16.9 |
| subject | The patient pertaining to the observation | Reference(US Core Patient Profile) | 16.9 |
| status | The observation status | Observation Status | 16.9 |
| category | Classification of type of observation | Category | 16.9 |
| code | Type of observation | LOINC Code | 16.9 |
| effectiveDate | Clinically relevant time/time-period for observation | dateTime | 16.9 |
| value | Observation result | CodeableConcept | 16.9 |
| issued | The date and time this version of the observation was made available to providers | instant | 16.9 |
| value | Observation result | CodeableConcept | 16.9 |
| bodySite | Indicates the site on the subject's body where the observation was made (i.e. the target site) | CodeableConcept | 16.9 |
| method | Indicates the mechanism used to perform the observation | CodeableConcept | 16.9 |
| hasMember | Used when reporting vital signs panel components | Reference(US Core Observation Lab Profile)(US Core Observation Screening Assessment Profile) | 16.9 |
| component | Used when reporting systolic and diastolic blood pressure | BackboneElement | 16.9 |
| meta.lastUpdated | The last time the observation was updated | instant | 16.9 |
| specimen | Specimen used for this observation | Reference (US Core Specimen Profile) | 19.1 |
| valueQuantity | Observation Quantity | valueQuantity | 19.2 |
| performer | Performer used for this observation | Reference (US Core Patient Profile) | 19.2 |
Example
{
"resource":{
"resourceType":"Observation",
"id":"lab-452",
"identifier":[
{
"use":"official",
"value":"lab-452"
},
{
"use":"usual",
"value":"XY202200016 - A"
}
],
"status":"registered",
"category":[
{
"coding":[
{
"system":"http://terminology.hl7.org/CodeSystem/observation-category",
"code":"laboratory",
"display":"laboratory"
}
],
"text":"Laboratory"
}
],
"code":{
"coding":[
{
"system":"http://loinc.org",
"code":"11065-0"
}
],
"text":"HPV Cervix"
},
"subject":{
"reference":"Patient/4CC272B3-0842-4D9E-A4AD-9535FA1AD01E",
"display":"Underwood, Jane"
},
"effectiveDate":"2022-06-30",
"issued":"2022-06-01T11:39:12+47:11",
"bodySite":{
"text":"right anterior 1st finger"
},
"method":{
"text":"Excision"
},
"specimen": {
reference": "Specimen/57"
}
}
}
{
"resource": {
"resourceType": "Observation",
"id": "simple-observation-sdoh-15107",
"meta": {
"lastUpdated": "2025-10-16T14:23:49.837+05:30",
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-simple-observation"
]
},
"identifier": [
{
"use": "official",
"value": "simple-observation-sdoh-15107"
}
],
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "survey",
"display": "Survey"
}
],
"text": "Survey"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "disability-status",
"display": "Disability Status"
}
],
"text": "Disability Status"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "sdoh",
"display": "SDOH"
}
],
"text": "SDOH"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "functional-status",
"display": "Functional Status"
}
],
"text": "Functional Status"
},
{
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category",
"code": "cognitive-status",
"display": "Cognitive Status"
}
],
"text": "Cognitive Status"
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "96777-8",
"display": "Accountable health communities (AHC) health-related social needs screening (HRSN) tool"
}
],
"text": "~USCDI v3 - Accountable health communities (AHC) health-related social needs screening (Panel code 96777-8)"
},
"subject": {
"reference": "Patient/fec408bc-3c64-4bdb-8d49-cdb68421d366",
"display": "Singh, RV Tomar"
},
"effectiveDateTime": "2025-09-25",
"issued": "2025-09-25T00:00:00+05:30",
"performer": [
{
"reference": "Patient/fec408bc-3c64-4bdb-8d49-cdb68421d366",
"display": "Singh, RV Tomar"
}
],
"valueQuantity": {
"value": 7
},
"hasMember": [
{
"reference": "Observation/15107-$0",
"display": "Body height:Length:Point in time:^Patient:Quantitative"
},
{
"reference": "Observation/15107-$1",
"display": "Problems with place where you live"
},
{
"reference": "Observation/15107-$2",
"display": "Within the past 12Mo the food we bought just didn't last and we didn't have money to get more"
},
{
"reference": "Observation/15107-$3",
"display": "Within the past 12Mo we worried whether our food would run out before we got money to buy more"
},
{
"reference": "Observation/15107-$4",
"display": "Has lack of transportation kept you from medical appointments, meetings, work, or from getting things needed for daily living"
},
{
"reference": "Observation/15107-$5",
"display": "Has the electric, gas, oil, or water company threatened to shut off services in your home in past 12 months"
},
{
"reference": "Observation/15107-$6",
"display": "How often does anyone, including family and friends, insult or talk down to you?"
},
{
"reference": "Observation/15107-$7",
"display": "How often does anyone, including family and friends, insult or talk down to you?"
},
{
"reference": "Observation/15107-$8",
"display": "How often does anyone, including family and friends, threaten you with harm?"
}
],
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8302-2",
"display": "Body height:Length:Point in time:^Patient:Quantitative"
}
],
"text": "Body height:Length:Point in time:^Patient:Quantitative"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA25495-5",
"display": "Allen figure"
}
],
"text": "Allen figure"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "96778-6",
"display": "Problems with place where you live"
}
],
"text": "Problems with place where you live"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA31998-0",
"display": "Lack of heat"
}
],
"text": "Lack of heat"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "88123-5",
"display": "Within the past 12Mo the food we bought just didn't last and we didn't have money to get more"
}
],
"text": "Within the past 12Mo the food we bought just didn't last and we didn't have money to get more"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA28398-8",
"display": "Never true"
}
],
"text": "Never true"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "88122-7",
"display": "Within the past 12Mo we worried whether our food would run out before we got money to buy more"
}
],
"text": "Within the past 12Mo we worried whether our food would run out before we got money to buy more"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA28398-8",
"display": "Never true"
}
],
"text": "Never true"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "93030-5",
"display": "Has lack of transportation kept you from medical appointments, meetings, work, or from getting things needed for daily living"
}
],
"text": "Has lack of transportation kept you from medical appointments, meetings, work, or from getting things needed for daily living"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA32-8",
"display": "No (Qualifier value)"
}
],
"text": "No (Qualifier value)"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "96779-4",
"display": "Has the electric, gas, oil, or water company threatened to shut off services in your home in past 12 months"
}
],
"text": "Has the electric, gas, oil, or water company threatened to shut off services in your home in past 12 months"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA32002-0",
"display": "Already shut off"
}
],
"text": "Already shut off"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "95617-7",
"display": "How often does anyone, including family and friends, insult or talk down to you?"
}
],
"text": "How often does anyone, including family and friends, insult or talk down to you?"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA6729-3",
"display": "Sometimes true"
}
],
"text": "Sometimes true"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "95617-7",
"display": "How often does anyone, including family and friends, insult or talk down to you?"
}
],
"text": "How often does anyone, including family and friends, insult or talk down to you?"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA6729-3",
"display": "Sometimes true"
}
],
"text": "Sometimes true"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "95616-9",
"display": "How often does anyone, including family and friends, threaten you with harm?"
}
],
"text": "How often does anyone, including family and friends, threaten you with harm?"
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": "LA28398-8",
"display": "Never true"
}
],
"text": "Never true"
}
}
]
}
}
Get
Returns a single Observation result based on the Observation ID.
HTTP Request
GET /r4/Observation/{observationId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| observationId | path | The unique identifier for the observation | Yes | 16.9 |
Example: Get a lab observation with an ID of '12'
GET https://select.nextech-api.com/api/r4/Observation/lab-12
Example: Get a sexual orientation observation with an ID of '123'
GET https://select.nextech-api.com/api/r4/Observation/sexual-orientation-123
Example: Get a occupation observation with an ID of '123'
GET https://select.nextech-api.com/api/r4/Observation/occupation-123
Example: Get a sdoh assessment observation with an ID of '15107'
GET https://select.nextech-api.com/api/r4/Observation/simple-observation-sdoh-15107
Search
Returns observations based on the provided search parameters
HTTP Request
GET /r4/Observation?{parameters}POST /r4/Observation/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body | The observation identifier | No | 16.9 |
| _id | query or body | The observation identifier | No | 16.9 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.9 |
| category | query or body | The category of observation by code ie. category=laboratory or by token ie. category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory | No | 16.9 |
| date | query or body | The observation date in the form YYYY-MM-DD | No | 16.9 |
| code | query or body | The loinc code of observation by code ie. code=49765-1 or token ie. code=http://loinc.org|49765-1 | No | 16.9 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each observation |
No | 17.0 |
| _lastUpdated | query or body | The date the observation was last modified, formatted as yyyy-MM-dd. We also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] . Note that the + character must be URL encoded. (i.e. %2B) (Note: Currently this search parameter will not filter the results for laboratory type observations) |
No | 16.9 |
Note: The possible filter values for the date or _lastUpdated parameters are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with observations
The _revinclude parameter allows support for including Provenance resources that match the returned observations.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the observation.
Example: Get a lab observation with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Observation?identifier=lab-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: identifier=lab-123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Observation?_id=lab-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: _id=lab-123&_revinclude=Provenance:target
Example: Get a sexual orientation observation with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Observation?identifier=sexual-orientation-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: identifier=sexual-orientation-123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Observation?_id=sexual-orientation-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: _id=sexual-orientation-123&_revinclude=Provenance:target
Example: Get a occupation observation with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Observation?identifier=occupation-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: identifier=occupation-123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Observation?_id=occupation-123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Observation/_search body: _id=occupation-123&_revinclude=Provenance:target
Example: Get all laboratory requisitions and lab results 5/1/2017
GET https://select.nextech-api.com/api/r4/Observation?category=laboratory&date=ge2017-05-01
POST https://select.nextech-api.com/api/r4/Observation/_search body: category=laboratory&date=ge2017-05-01
Example: Get the social histories charted in encounters as of 5/1/2017
GET https://select.nextech-api.com/api/r4/Observation?category=social-history&date=ge2017-05-01
POST https://select.nextech-api.com/api/r4/Observation/_search body: category=social-history&date=ge2017-05-01
Example: Get the vital signs charted in encounters as of 5/1/2017
GET https://select.nextech-api.com/api/r4/Observation?category=vital-signs&date=ge2017-05-01
POST https://select.nextech-api.com/api/r4/Observation/_search body: category=vital-signs&date=ge2017-05-01
Example: Get all sexual orientation observations for a patient
GET https://select.nextech-api.com/api/r4/Observation?code=76690-7&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
POST https://select.nextech-api.com/api/r4/Observation/_search body: code=76690-7&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
Example: Get all occupation observations for a patient
GET https://select.nextech-api.com/api/r4/Observation?code=11341-5&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
POST https://select.nextech-api.com/api/r4/Observation/_search body: code=11341-5&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
Example: Get all diagnostic images for a patient
GET https://select.nextech-api.com/api/r4/Observation?category=imaging&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
POST https://select.nextech-api.com/api/r4/Observation/_search body: category=imaging&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
Example: Get all survey observations for a patient
GET https://select.nextech-api.com/api/r4/Observation?category=survey&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
POST https://select.nextech-api.com/api/r4/Observation/_search body: category=survey&patient=4CC272B3-0842-4D9E-A4AD-9535FA1AD01E
Procedure
Overview
A procedure resource describes an activity performed with or on a patient as part of the provision of care.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The logical id of the resource, as used in the URL for the resource. | string | 16.7 |
| identifier | The unique value assigned to each procedure which discerns them from all others. | Identifier | 16.7 |
| basedOn | A request for this procedure | Reference ([CarePlan | ServiceRequest]) |
| status | The status of the procedure | EventStatus | 16.7 |
| category | Classification of the procedure | CodeableConcept | 20.0 |
| subject | Who the procedure was performed on | Reference (US Core Patient Profile) | 16.7 |
| performedDateTime | Date the procedure was performed | DateTime | 16.7 |
Example
{
"resourceType": "Procedure",
"id": "2053",
"identifier": [
{
"use": "official",
"value": "2053"
}
],
"basedOn": [
{
"reference": "Encounter/1035"
}
],
"status": "completed",
"category": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "410606002",
"display": "Social service procedure"
}
]
},
"code": {
"coding": [
{
"system": "CPT4",
"code": "54601",
"display": "Microdermabrasion"
}
],
"text": "Microdermabrasion"
},
"subject": {
"reference": "Patient/5F37E582-FD96-48C5-9EE3-02E26D96CB72",
"display": "Smith, John"
},
}
Get
Returns a single Procedure result based on the Procedure ID.
HTTP Request
GET /r4/Procedure/{procedureID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| procedureID | path | The procedure unique identifier | Yes | 16.7 |
Example: Get an procedure with an ID of '123'
GET https://select.nextech-api.com/api/r4/Procedure/123
Search
Returns procedures based on the provided search parameters.
HTTP Requests
GET /r4/Procedure?{parameters}POST /r4/Procedure/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _lastUpdated | query or body | The date the procedure was last modified, formatted as yyyy-MM-dd. We also support the format yyyy-MM-ddThh:mm:ss[Z|(+|-)hh:mm] . Note that the + character must be URL encoded. (i.e. %2B) |
No | 16.7 |
| patient | query or body | The official patient identifier acquired from a patient search | No | 16.7 |
| date | query or body | The date the procedure was performed in the form YYYY-MM-DD | No | 16.7 |
| _id | query or body | The procedure unique identifier | No | 16.7 |
| identifier | query or body | The procedure unique identifier | No | 16.7 |
| _revinclude | query or body | Must be Provenance:target. This enables requesting additional Provenance resources that relate to each procedure |
No | 17.0 |
Note: The possible filter values for the date or _lastUpdated parameters are: eq, ne, le, lt, ge and gt.
Retrieve Provenance with procedures
The _revinclude parameter allows support for including Provenance references that match the returned procedures.
This value must be Provenance:target, otherwise the request will result in an error.
These will be in additional bundle entry components, which have a Provenance.Target entry that identifies the relative link to the procedure.
Example: Get a procedure with an identifier '123' with provenance
GET https://select.nextech-api.com/api/r4/Procedure?identifier=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Procedure/_search body: identifier=123&_revinclude=Provenance:target
GET https://select.nextech-api.com/api/r4/Procedure?_id=123&_revinclude=Provenance:target
POST https://select.nextech-api.com/api/r4/Procedure/_search body: _id=123&_revinclude=Provenance:target
Examples:
Get all procedures
GET https://select.nextech-api.com/api/r4/Procedure
Search for procedures for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192'
GET https://select.nextech-api.com/api/r4/Procedure?patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
POST https://select.nextech-api.com/api/r4/Procedure/_search body: patient=9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192
Search for procedures for the patient with the id '9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192' performed between and including 1/1/2022 through 11/14/2022
GET https://select.nextech-api.com/api/r4/Procedure?patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
POST https://select.nextech-api.com/api/r4/Procedure/_search body: patient=patient/9D0B7ADE-4B5B-41DD-8AC4-88DB4C93B192&date=ge2022-01-01&date=lt2022-11-14
Search for an procedure with the id '123'
GET https://select.nextech-api.com/api/r4/Procedure?_id=123
POST https://select.nextech-api.com/api/r4/Procedure/_search body: _id=123
Related Person
Overview
A Related Person resource represents persons with a legal or familial relationship to a patient.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each Related Person Relationship which discerns it from all others | string | 18.7 |
| active | Whether this related person's record is in active use | boolean | 18.7 |
| patient | The patient this person is related to | Reference(US Core Patient Profile) | 18.7 |
| relationship | The nature of the relationship | CodeableConcept | 18.7 |
| name | A name associated with the person | HumanName | 18.7 |
| telecom | A contact detail for the person | ContactPoint | 18.7 |
| address | Address where the related person can be contacted or visited | Address | 18.7 |
Example
{
"resourceType": "RelatedPerson",
"id": "1",
"active": true,
"patient": {
"reference": "Patient/c27e5be0-4b44-4ec5-a284-4308d6ac2b1a",
"display": "Newman, Alice Jones"
},
"relationship": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode",
"code": "MTH"
}
]
}
],
"name": [
{
"use": "official",
"text": "Cheryl Newman",
"family": "Newman",
"given": [
"Cheryl"
]
}
],
"telecom": [
{
"system": "phone",
"value": "(586) 501-4732",
"use": "home"
}
],
"address": [
{
"use": "home",
"type": "both",
"line": [
"480 Hoppe Valley Lakes"
],
"city": "Port Brett",
"state": "ID",
"postalCode": "83295"
}
]
}
Get
Returns a single Related Person result based on the Related Person ID.
HTTP Request
GET /r4/RelatedPerson/{relatedPersonID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| relatedPersonID | path | The unique identifier for the related person | Yes | 18.7 |
Example: Get a specific Related Person based on identifier
GET https://select.nextech-api.com/api/r4/RelatedPerson/relatedperson-821patient-73
Search
Searches for all related persons based on the given search criteria.
HTTP Request
GET /r4/RelatedPerson?{parameters}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _id | query or uri | The unique value assigned to each Related Person which discerns it from all others | No | 18.7 |
Example: Get all Related Persons
GET https://select.nextech-api.com/api/r4/RelatedPerson
Example: Get a specific Related Person based on id
GET https://select.nextech-api.com/api/r4/RelatedPerson?_id=relatedperson-821patient-73
Binary
Overview
Returns the Binary data and content type of a Document Reference or a Diagnostic Report.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| contentType | The mimetype of the content. | Code | 17.0 |
| data | The base64 encoded data of the attachment. | base64Binary | 17.0 |
Example
{
"resourceType": "Binary",
"contentType": "text/plain",
"data": "U0dWc2JHOGg=",
}
Get By ID
Gets the binary form of a document by ID
HTTP Request
GET /r4/Binary/{documentType-id}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| documentType-id | path | Must be in the form documenttype-id i.e: GET /r4/Binary/history-5 |
Yes | 17.0 |
Supported Document Types
The supported document type specifiers for IDs are history-{id} and emn-{id}.
Example: Get the binary form of a history document with ID 2262 which is a text file with a content of "Hello!"
GET https://select.nextech-api.com/api/r4/Binary/history-2262
Location
Overview
A Location resource represents a physical location where services are provided. This may or may not be under the practice's management.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each location which discerns it from all others | string | 12.8 |
| identifier | The unique value assigned to each location which discerns it from all others | Identifier | 12.8 |
| meta.lastUpdated | The last time the location was modified | instant | 16.9 |
| status | The status of the location (ie. active, inactive) | code | 12.8 |
| managed | True if this location is under practice management, for example the practice's primary office location. False if this location is not under practice management, but where services are provided, for example a hospital or clinic. | boolean | 14.4 |
| name | The name of the location | string | 12.8 |
| telecom | The contact details of communication at the location | ContactPoint | 12.8 |
| address | The address of the location | Address | 12.8 |
| managingOrganization | The reference to the associated organization | Reference (US Core Organization Profile) | 16.9 |
Example
{
"resourceType": "Location",
"id": "2",
"meta":
{
"lastUpdated": "2022-04-02T14:04:35.9+00:00"
},
"extension": [
{
"url": "https://select.nextech-api.com/api/structuredefinition/managed",
"valueBoolean": true
}
],
"identifier": [
{
"use": "official",
"value": "2"
}
],
"status": "active",
"name": "South Dermatology",
"telecom": [
{
"system": "phone",
"value": "(727) 623-6100",
"use": "work"
},
{
"system": "other",
"value": "(727) 718-9884",
"use": "work"
},
{
"system": "fax",
"value": "(727) 623-6187",
"use": "work"
}
],
"address": {
"use": "work",
"type": "both",
"line": [
"1234 Central Ave., Suite N"
],
"city": "St. Petersburg",
"state": "FL",
"postalCode": "11598"
},
"managingOrganization": {
"reference": "Organization/1",
"display": "Tampa Dermatology"
}
}
Get
Returns a single Location result based on the Location ID.
HTTP Request
GET /r4/Location/{LocationID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| locationID | path | The location unique identifier | Yes | 16.9 |
Example: Get an location with an ID of '123'
GET https://select.nextech-api.com/api/r4/Location/123
Search
Searches for all locations based on the given search criteria.
HTTP Requests
GET /r4/Location?{parameters}POST /r4/Location/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body | The unique value assigned to each location which discerns it from all others | No | 12.8 |
| status | query or body | Searches for locations with a specific kind of status. See LocationStatus | No | 12.8 |
| includeAll | query or body | By default, or if includeAll is false, then only managed locations are returned, for example the practice's primary office location. If includeAll is true, then all locations will be returned, whether they are under under practice management or not, but where services are provided, such as a hospital or a clinic. | No | 14.4 |
| name | query or body | The name of the location | No | 12.8 |
| address | query or body | A (part of the) address of the location | No | 12.8 |
| address-city | query or body | A city specified in an address | No | 12.8 |
| address-state | query or body | A state specified in an address | No | 12.8 |
| address-postalcode | query or body | A postal code specified in an address | No | 12.8 |
| phone | query or body | Searches for locations based on phone numbers and fax numbers | No | 12.8 |
| _id | query or body | The location unique identifier | No | 16.9 |
| _lastUpdated | query or body | The last time the location was modified | No | 16.9 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Example: Get all active locations
POST https://select.nextech-api.com/api/r4/Location/_search?status=active
Example: Get all locations, including managed and non-managed locations
POST https://select.nextech-api.com/api/r4/Location/_search?includeAll=true
Example: Get all active locations whose city starts with 'Tampa'
POST https://select.nextech-api.com/api/r4/Location/_search?address-city=Tampa&status=active
Example: Get all locations whose name contains 'dermatology'
POST https://select.nextech-api.com/api/r4/Location/_search?name:contains=dermatology
Example: Get a specific location based on identifier
POST https://select.nextech-api.com/api/r4/Location/_search?identifier=123
Example: Get all active locations
GET https://select.nextech-api.com/api/r4/Location?status=active
Example: Get all locations, including managed and non-managed locations
GET https://select.nextech-api.com/api/r4/Location?includeAll=true
Example: Get all active locations whose city starts with 'Tampa'
GET https://select.nextech-api.com/api/r4/Location?address-city=Tampa&status=active
Example: Get all locations whose name contains 'dermatology'
GET https://select.nextech-api.com/api/r4/Location?name:contains=dermatology
Example: Get a specific location based on identifier
GET https://select.nextech-api.com/api/r4/Location?identifier=123
Practitioner
Overview
A Practitioner resource represents an individual who is engaged in the healthcare process and healthcare-services. In the Nextech Software, these are providers who are linked to users.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| identifier | The unique value assigned to each Practitioner which discerns it from all others | Identifier | 12.8 |
| active | Whether this practitioner's record is in active use. | boolean | 12.8 |
| name | The name(s) associated with the practitioner | HumanName | 12.8 |
| telecom | Contact detail(s) for the practitioner (that apply to all roles) | ContactPoint | 12.8 |
| address | Address(es) of the practitioner that are not role specific | Address | 12.8 |
| gender | Gender of the practitioner | Code | 12.8 |
| birthDate | The date of birth of the practitioner | date | 12.8 |
Example
{
"resourceType": "Practitioner",
"identifier": [
{
"use": "official",
"system": "https://select.nextech-api.com/api/structuredefinition/practitioner-id"
"value": "9219"
},
{
"system": "http://hl7.org/fhir/sid/us-npi",
"value": "1245319599"
}
],
"active": true,
"name": [
{
"text": "Davis, Albert Edward",
"family": "Davis",
"given": [
"Albert",
"Edward"
]
}
],
"telecom": [
{
"system": "phone",
"value": "(813) 324-2391",
"use": "work"
},
{
"system": "email",
"value": "provider@nextech.com",
"use": "work"
}
],
"address": [
{
"use": "work",
"type": "both",
"line": [
"550 W N ST"
],
"city": "Tampa",
"state": "FL",
"postalCode": "33609",
"country": "US"
}
],
"gender": "male",
"birthDate": "1970-09-27"
Get
Returns a single Practitioner result based on the Practitioner ID.
HTTP Request
GET /r4/Practitioner/{practitionerID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| practitionerID | path | The unique identifier for the practitioner | Yes | 12.8 |
Example: Get a specific Practitioner based on identifier
GET https://select.nextech-api.com/api/r4/Practitioner/12
Search
Searches for all based on the given search criteria.
HTTP Request
GET /r4/Practitioner?{parameters}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or uri | The unique value assigned to each Practitioner which discerns it from all others | No | 12.8 |
| active | query | Searches for Practitioners whose record is in active use. | No | 12.8 |
| name | query | The name of the Practitioner | No | 12.8 |
| family | query | The family (last) name of the practitioner | No | 12.8 |
| given | query | The given (first) name of the practitioner | No | 12.8 |
| address | query | A (part of the) address of the Practitioner | No | 12.8 |
| address-city | query | A city specified in an address | No | 12.8 |
| address-state | query | A state specified in an address | No | 12.8 |
| address-postalcode | query | A postal code specified in an address | No | 12.8 |
| address-country | query | A Country ISO 3166 2 letter code specified in an address | No | 19.2 |
| phone | query | Searches for Practitioners based on phone numbers | No | 12.8 |
| query | Searches for Practitioner based on email address | No | 12.8 | |
| gender | query | Searches for Practitioner based on gender | No | 12.8 |
Example: Get all Practitioners
GET https://select.nextech-api.com/api/r4/Practitioner
Example: Get all active Practitioners
GET https://select.nextech-api.com/api/r4/Practitioner?active=true
Example: Get a specific Practitioner based on identifier
GET https://select.nextech-api.com/api/r4/Practitioner?identifier=12
Example: Get a specific Practitioner based on National Provider Identifier (NPI)
GET https://select.nextech-api.com/api/r4/Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|1245319599
Example: Get all active Practitioners whose city starts with 'Tampa'
GET https://select.nextech-api.com/api/r4/Practitioner?address-city=Tampa
Example: Get a specific Practitioner(s) based on gender
GET https://select.nextech-api.com/api/r4/Practitioner?gender=male
Example: Get all Practitioners whose name contains 'smith'
GET https://select.nextech-api.com/api/r4/Practitioner?name:contains=smith
Remarks
- To get a specific Practitioner by the National Provider Identifier (NPI), the system (http://hl7.org/fhir/sid/us-npi) must be included in the query.
- Providers will not show up as Practitioners unless their Contacts module record has the Linked User setting configured.
- Prior to version 14.1, Practitioners could be returned more than once if multiple users are assigned to use the same provider in their Contacts module User properties.
Account
Overview
The Account resource represents a financial tool for tracking value accrued for a particular purpose. In Nextech, it's used to track the patient's responsibility.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | Unique identifier used to reference the account. | string | 12.9 |
| identifier | Unique identifier used to reference the account. | Identifier | 12.9 |
| name | The name associated with the Account. | string | 12.9 |
| status | Indicates whether the account is presently used/usable or not. | CodeableConcept | 12.9 |
| type | Categorizes the account for reporting and searching purposes. | CodeableConcept | 12.9 |
| description | Provides additional information about what the account tracks and how it is used. | string | 12.9 |
| subject | Identifies the patient or other object the account is associated with. | Reference | 12.9 |
| guarantor | Party financially responsible for the account. | BackboneElement | 12.9 |
| guarantor.party | The entity who is responsible. | Reference(US Core Patient Profile) | 12.9 |
}
Example
{
"resourceType": "Account",
"id": "3200",
"identifier": [
{
"use": "official",
"value": "3200"
}
],
"status": "active",
"type": {
"coding": [
{
"system": "https://www.hl7.org/fhir/valueset-account-type.html",
"code": "PBILLACCT"
}
],
"text": "Patient"
},
"name": "Test, John",
"subject": {
"reference": "Patient/59015300-e15b-474c-8314-7864712f6946"
},
"description": "Patient Responsibility",
"guarantor": [
{
"party": {
"reference": "Patient/59015300-e15b-474c-8314-7864712f6946"
}
}
]
}
Get
Returns a single Account based on the account ID.
HTTP Request
GET /r4/Account/{accountID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| accountID | path | The account identifier | Yes | 12.9 |
Example: Get a specific Account with an id of '12'
GET https://select.nextech-api.com/api/r4/Account/12
Search
Searches for all accounts based on the given search criteria.
HTTP Request
GET r4/Account?{parameters}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or uri | The unique value assigned to each Account which discerns it from all others. | No | 12.9 |
| status | query | Searches for Accounts whose record has the search status. | No | 12.9 |
| name | query | The name of the Account. | No | 12.9 |
| balance | query | The balance of the Account. | No | 12.9 |
| patient | query | The patient the account is tied to. | No | 12.9 |
Example: Get all active Accounts
GET https://select.nextech-api.com/api/r4/Account?status=active
Example: Get accounts with a balance greater than zero
GET https://select.nextech-api.com/api/r4/Account?balance=gt0
Example: Get a specific Account attached to a patient
GET https://select.nextech-api.com/api/r4/Account?patient=59015300-e15b-474c-8314-7864712f6946
Example: Get all Accounts whose name contains 'smith'
GET https://select.nextech-api.com/api/r4/Account?name:contains=smith
Coverage
Coverage
Overview
The Coverage resource provides patient insurance information which may be used to pay for the provision of health care products and services.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| identifier | The unique identifer for the coverage | Identifier | 18.9 |
| status | The status of the coverage | code | 18.9 |
| type | The type of coverage (ie. Medical, Vision, Dental, Auto, Workers' Comp). See | CodeableConcept | 18.9 |
| subscriber | The subscriber to the policy | Reference( US Core Patient Profile or US Core RelatedPerson Profile) | 18.9 |
| subscriberId | The identifier assigned to the subscriber | string | 18.9 |
| beneficiary | The patient who benefits from the coverage | Reference(US Core Patient Profile) | 18.9 |
| relationship | The beneficiary (or patient) relationship to the subscriber. See | CodeableConcept | 18.9 |
| period | The coverage effective and expiry dates (if available) | Period | 18.9 |
| payor | The reference to the insurance company providing the insurance coverage | Reference(US Core Organization Profile | 18.9 |
| class:group.value | The policy group number for the coverage | string | 18.9 |
| class:plan.value | The insurance plan name or type | string | 18.9 |
| order | The relative order of the coverage | positiveInt | 18.9 |
Example
{
"resource": {
"resourceType": "Coverage",
"id": "156",
"identifier": [
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MB",
"display": "Member Number"
}
],
"text": "Member Number"
},
"system": "https://select.nextech-api.com/coverage-ids",
"value": "156",
"period": {
"start": "2015-01-01T00:00:00+05:30",
"end": "2030-03-05T00:00:00+05:30"
},
"assigner": {
"reference": "Organization/133",
"display": "Blue Cross - Blue Cross"
}
}
],
"status": "active",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "EHCPOL",
"display": "extended healthcare"
}
]
},
"subscriber": {
"reference": "#156",
"display": "Newman, Shobhit Jones"
},
"subscriberId": "88800933502",
"beneficiary": {
"reference": "Patient/f4b860ce-2393-4db4-849d-a07445778940",
"display": "Newman, Alice Jones"
},
"relationship": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
"code": "other",
"display": "Other"
}
]
},
"period": {
"start": "2015-01-01T00:00:00+05:30",
"end": "2030-03-05T00:00:00+05:30"
},
"payor": [
{
"reference": "#133",
"display": "Blue Cross - Blue Cross"
}
],
"class": [
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/coverage-class",
"code": "group",
"display": "Group"
}
],
"text": "Group"
},
"value": "22222222222",
"name": "Employer Group Plan 22222222222"
},
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/coverage-class",
"code": "plan",
"display": "Plan"
}
],
"text": "Plan"
},
"value": "Blue Cross - Blue Cross - Other",
"name": "Blue Cross - Blue Cross - Other"
}
],
"order": 1
}
}
Search
Searches for all active coverages (insured parties) based on the given search criteria.
HTTP Request
GET /r4/Coverage?{parameters}
POST /r4/Coverage/_search?{parameters}
Note: For POST based searches the parameters can be provided by the body.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| patient | query or body | Search coverages by patient _id or identifier | Yes | 18.9 |
Example: Get coverages for a single patient
GET https://select.nextech-api.com/api/r4/Coverage?patient=ce2a5ae0-3514-4f63-8609-911da841e72e
Get
Returns a single coverage (insured party) based on the given search criteria.
HTTP Request
GET /r4/Coverage?{CoverageId}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| CoverageId | path | Search coverage by Coverage identifier | Yes | 18.9 |
Example: Get a specific coverage based on coverage identifier
GET https://select.nextech-api.com/api/r4/Coverage/156
Organization
Overview
An Organization resource represents a physical location where services are provided. This may or may not be under the practice's management.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each location which discerns it from all others | string | 12.8 |
| identifier | The unique value assigned to each location which discerns it from all others | Identifier | 12.8 |
| identifier:NPI | NPI identifier for the organization that is used to identify the organization across multiple disparate systems | Identifier | 16.9 |
| meta.lastUpdated | The last time the organization was modified | instant | 16.9 |
| type | The type of organization e.g., Healthcare Provider, Payor... | string | 19.2 |
| name | The name of the location | string | 12.8 |
| telecom | The contact details of communication at the location | ContactPoint | 12.8 |
| address | The address of the location | Address | 12.8 |
| address.country | The country of the location address | string | 16.9 |
| active | Whether the organization's record is still in active use | boolean | 12.8 |
Example
{
"resourceType": "Organization",
"id": "2",
"meta":
{
"lastUpdated": "2022-04-02T14:04:35.9+00:00"
},
"identifier": [
{
"use": "official",
"value": "2"
},
{
"system": "http://hl7.org/fhir/sid/us-npi",
"value": "ABCDE1234"
}
],
"active": true,
"type": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/organization-type",
"code": "pay"
}
],
"text": "Payer"
}
],
"name": "South Dermatology",
"telecom": [
{
"system": "phone",
"value": "(727) 623-6100",
"use": "work"
},
{
"system": "other",
"value": "(727) 718-9884",
"use": "work"
},
{
"system": "fax",
"value": "(727) 623-6187",
"use": "work"
}
],
"address": [{
"use": "work",
"type": "both",
"line": [
"1234 Central Ave., Suite N"
],
"city": "St. Petersburg",
"state": "FL",
"postalCode": "11598",
"country": "US"
}]
}
Get
Returns a single Organization result based on the Organization ID.
HTTP Request
GET /r4/Organization/{OrganizationID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| OrganizationID | path | The organization unique identifier | Yes | 16.9 |
Example: Get an organization with an ID of '123'
GET https://select.nextech-api.com/api/r4/Organization/123
Search
Searches for all organizations based on the given search criteria.
HTTP Requests
GET /r4/Organization?{parameters}POST /r4/Organization/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| identifier | query or body | The unique value assigned to each organization which discerns it from all others | No | 12.8 |
| status | query or body | Searches for organizations with a specific kind of status. See OrganizationStatus | No | 12.8 |
| includeAll | query or body | By default, or if includeAll is false, then only managed organizations are returned, for example the practice's primary office location. If includeAll is true, then all organizations will be returned, whether they are under under practice management or not, but where services are provided, such as a hospital or a clinic. | No | 14.4 |
| name | query or body | The name of the organization | No | 12.8 |
| address | query or body | A (part of the) address of the organization | No | 12.8 |
| address-city | query or body | A city specified in an address | No | 12.8 |
| address-state | query or body | A state specified in an address | No | 12.8 |
| address-postalcode | query or body | A postal code specified in an address | No | 12.8 |
| phone | query or body | Searches for locations based on phone numbers and fax numbers | No | 12.8 |
| _id | query or body | The organization unique identifier | No | 16.9 |
| _lastUpdated | query or body | The last time the organization was modified | No | 16.9 |
| type | query or body | The type of organization e.g., Healthcare Provider, Payor... | No | 19.2 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Example: Get all active organizations
POST https://select.nextech-api.com/api/r4/Organization/_search?status=active
Example: Get all organizations, including managed and non-managed organizations
POST https://select.nextech-api.com/api/r4/Organization/_search?includeAll=true
Example: Get all active organizations whose city starts with 'Tampa'
POST https://select.nextech-api.com/api/r4/Organization/_search?address-city=Tampa&status=active
Example: Get all organizations whose name contains 'dermatology'
POST https://select.nextech-api.com/api/r4/Organization/_search?name:contains=dermatology
Example: Get a specific organization based on identifier
POST https://select.nextech-api.com/api/r4/Organization/_search?identifier=123
Example: Get all active organizations
GET https://select.nextech-api.com/api/r4/Organization?status=active
Example: Get all organizations, including managed and non-managed organizations
GET https://select.nextech-api.com/api/r4/Organization?includeAll=true
Example: Get all active organizations whose city starts with 'Tampa'
GET https://select.nextech-api.com/api/r4/Organization?address-city=Tampa&status=active
Example: Get all organizations whose name contains 'dermatology'
GET https://select.nextech-api.com/api/r4/Organization?name:contains=dermatology
Example: Get a specific organization based on identifier
GET https://select.nextech-api.com/api/r4/Organization?identifier=123
Example: Get a specific organization based on type (eg. prov or pay)
GET https://select.nextech-api.com/api/r4/Organization?type=pay GET https://select.nextech-api.com/api/r4/Organization?type=prov
Provenance
Overview
The provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource.
Fields
| Name | Description | Type | Initial Version |
|---|---|---|---|
| id | The unique value assigned to each provenance which discerns it from all others | string | 17.0 |
| meta.lastUpdated | The last time the provenance was modified | instant | 17.0 |
| target | The resource(s) the provenance supports | Reference (Resource) | 17.0 |
| recorded | Timestamp of when the activity was recorded | instant | 17.0 |
| agent | Actor involved | slice | 17.0 |
| agent.type | How the agent participated | CodeableConcept | 17.0 |
| agent.who | Who participated | Reference (US Core Practitioner Profile or US Core Organization Profile or US Core Patient Profile) | 17.0 |
| agent.onBehalfOf | Who the agent is representing | Reference (US Core Organization Profile) | 17.0 |
Example
{
"resourceType": "Provenance",
"id": "4",
"meta": {
"lastUpdated": "2022-08-05T14:29:08.217-04:00"
},
"target": [
{
"reference": "Immunization/145"
},
{
"reference": "DocumentReference/history-131816"
}
],
"recorded": "2022-08-05T14:29:08.217-04:00",
"agent": [
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
"code": "author",
"display": "Author"
}
],
"text": "Author"
},
"who": {
"reference": "Practitioner/26546",
"display": "PortalProvider, PortalProvider"
},
"onBehalfOf": {
"reference": "Organization/47",
"display": "Pawtucket Plastic Surgeons"
}
},
{
"type": {
"coding": [
{
"system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type",
"code": "transmitter",
"display": "Transmitter"
}
],
"text": "Transmitter"
},
"who": {
"reference": "Practitioner/26546",
"display": "PortalProvider, PortalProvider"
},
"onBehalfOf": {
"reference": "Organization/47",
"display": "Pawtucket Plastic Surgeons"
}
}
]
}
Get
Returns a single Provenance result based on the Provenance ID.
HTTP Request
GET /r4/Provenance/{ProvenanceID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| ProvenanceID | path | The provenance unique identifier | Yes | 17.0 |
Example: Get a specific provenance based on identifier
GET https://select.nextech-api.com/api/r4/Provenance/123
Search
Searches for all provenance info based on the given search criteria.
HTTP Requests
GET /r4/Provenance?{parameters}POST /r4/Provenance/_search?{parameters}- application/x-www-form-urlencoded body:
{parameters}
- application/x-www-form-urlencoded body:
Note: For POST based searches the parameters can be provided in either the URL, the body, or both.
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _id | query or body | The unique value assigned to each provenance which discerns it from all others | No | 17.0 |
| identifier | query or body | The unique value assigned to each provenance which discerns it from all others | No | 17.0 |
| _lastUpdated | query or body | The last time the provenance was modified | No | 17.0 |
| patient | query or body | The unique patient ID to find direct (Patient resource only) patient provenance for | No | 17.0 |
Note: The possible filter values for the _lastUpdated parameter are: eq, ne, le, lt, ge and gt.
Example: Get all provenance info
GET https://select.nextech-api.com/api/r4/Provenance
Example: Get a specific provenance based on identifier
GET https://select.nextech-api.com/api/r4/Provenance?_id=123
Bulk Export
Bulk FHIR Export (Documentation)
Overview
This functionality provides the ability for asynchronous generation of potentially large amounts of bulk data - whether that be all patients, a subset (defined group) of patients, or all available data contained in the FHIR server.
Bulk Data Kick-off request
Allows for the generation of bulk data in one of three different formats: all patients, a subset of patients within a defined group, or all available data contained in the FHIR server.
All Patients
HTTP Request
GET /r4/Patient/$export?{parameters}
HTTP Headers
| Name | Value | Description | Required |
|---|---|---|---|
| Accept | application/fhir+json |
Specifies the format of the optional OperationOutcome resource response to the kick-off request | Yes |
| Prefer | respond-async |
Specifies whether the response is immediate or asynchronous | Yes |
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _outputFormat | query | The format for the requested bulk data files to be generated as per the FHIR Asynchronous Request Pattern. Defaults to application/fhir+ndjson, but also supports application/ndjson and ndjson abbreviated representations |
No | 16.9 |
| _since | query | Resources will be included in the response if their state has changed after the supplied time (e.g. if Resource.meta.lastUpdated is later than the supplied _since time) |
No | 16.9 |
| _type | query | String of comma-delimited FHIR R4 resource types (example: Patient,MedicationRequest). All supported resources are returned if this parameter is not provided |
No | 16.9 |
HTTP Response
A successful kick-off request will return a response with a 202 Accepted HTTP status code, along with a Content-Location reponse header containing the absolute URL of the endpoint that must be used for subsequent status requests (polling location), which will be located at https://select.nextech-api.com/api/r4/Export/{ExportJobID}. See below for the usage of this polling endpoint.
A failed kick-off request will return a response with either a 4XX or 5XX range status code, along with a JSON response body containing a FHIR OperationOutCome resource describing the error that occurred.
Example: Start an export of all patients
GET https://select.nextech-api.com/api/r4/Patient/$export
All Patients within a group
HTTP Request
GET /r4/Group/{GroupID}/$export?{parameters}
HTTP Headers
| Name | Value | Description | Required |
|---|---|---|---|
| Accept | application/fhir+json |
Specifies the format of the optional OperationOutcome resource response to the kick-off request | Yes |
| Prefer | respond-async |
Specifies whether the response is immediate or asynchronous | Yes |
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| GroupID | path | ID of the group of patients to export | Yes | 16.9 |
| _outputFormat | query | The format for the requested bulk data files to be generated as per the FHIR Asynchronous Request Pattern. Defaults to application/fhir+ndjson, but also supports application/ndjson and ndjson abbreviated representations |
No | 16.9 |
| _since | query | Resources will be included in the response if their state has changed after the supplied time (e.g. if Resource.meta.lastUpdated is later than the supplied _since time) |
No | 16.9 |
| _type | query | String of comma-delimited FHIR R4 resource types (example: Patient,MedicationRequest). All supported resources are returned if this parameter is not provided |
No | 16.9 |
HTTP Response
A successful kick-off request will return a response with a 202 Accepted HTTP status code, along with a Content-Location reponse header containing the absolute URL of the endpoint that must be used for subsequent status requests (polling location), which will be located at https://select.nextech-api.com/api/r4/Export/{ExportJobID}. See below for the usage of this polling endpoint.
A failed kick-off request will return a response with either a 4XX or 5XX range status code, along with a JSON response body containing a FHIR OperationOutCome resource describing the error that occurred.
Example: Start an export of all patients within the group with an ID of "1"
GET https://select.nextech-api.com/api/r4/Group/1/$export
System level export
HTTP Request
GET /r4/$export?{parameters}
HTTP Headers
| Name | Value | Description | Required |
|---|---|---|---|
| Accept | application/fhir+json |
Specifies the format of the optional OperationOutcome resource response to the kick-off request | Yes |
| Prefer | respond-async |
Specifies whether the response is immediate or asynchronous | Yes |
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| _outputFormat | query | The format for the requested bulk data files to be generated as per the FHIR Asynchronous Request Pattern. Defaults to application/fhir+ndjson, but also supports application/ndjson and ndjson abbreviated representations |
No | 16.9 |
| _since | query | Resources will be included in the response if their state has changed after the supplied time (e.g. if Resource.meta.lastUpdated is later than the supplied _since time) |
No | 16.9 |
| _type | query | String of comma-delimited FHIR R4 resource types (example: Patient,MedicationRequest). All supported resources are returned if this parameter is not provided |
No | 16.9 |
HTTP Response
A successful kick-off request will return a response with a 202 Accepted HTTP status code, along with a Content-Location reponse header containing the absolute URL of the endpoint that must be used for subsequent status requests (polling location), which will be located at https://select.nextech-api.com/api/r4/Export/{ExportJobID}. See below for the usage of this polling endpoint.
A failed kick-off request will return a response with either a 4XX or 5XX range status code, along with a JSON response body containing a FHIR OperationOutCome resource describing the error that occurred.
Example: Start an export of all allowed FHIR resources
GET https://select.nextech-api.com/api/r4/$export
Poll export content location
HTTP Request
GET /r4/Export/{ExportJobID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| ExportJobID | path | ID of the export job to poll the status of. Returned in the Content-Location HTTP header in the HTTP response to the kick-off request |
Yes | 16.9 |
HTTP Response
An export job can be in one of three states: In-Progress, Error, and Complete, and has the following types of responses for those states:
In-Progress
Returned by the server while it is processing the $export request.
The X-Progress HTTP response header gives an indication of how far along the export is, as a percentage.
The Retry-After HTTP response header gives a delay time in seconds indicating the amount of time to wait before making another polling request to this endpoint.
Status: 202 Accepted X-Progress: “50% complete” Retry-After: 120
Error
Returned by the server if the export operation fails.
A description of the error is in the OperationOutcome.Text member of the FHIR JSON response. The below is an example of a timeout error.
Status: 500 Internal Server Error Content-Type: application/json{ "resourceType": "OperationOutcome", "id": "1", "issue": [ { "severity": "error", "code": "processing", "details": { "text": "An internal timeout has occurred" } } ] }
Complete
Returned by the server when the export operation has completed. Below is an example response for when this endpoint is polled and the requested export job (filtered to the Patient and Observation FHIR resources, in this example) has completed.
The Expires HTTP response header indicates when the files in the response will no longer be available for access.
The transactionTime member in the JSON response body indicates the server's time when the query is run.
The request member in the JSON response body is the full URL of the original bulk data kick-off request.
The requiresAccessToken member in the JSON response body indicates whether an OAuth 2.0 bearer token is required to access the indicated export files.
The output array member in the JSON response body indicates both each exported FHIR resource type and the url containing the exported .ndjson file for that resource.
The error array member in the JSON response body indicates each error file detailing error(s) that were encountered during the export.
Status: 200 OK Expires: Mon, 22 Jul 2019 23:59:59 GMT Content-Type: application/json{ "transactionTime": "2021-01-01T00:00:00Z", "request" : "https://select.nextech-api.com/api/r4/Patient/$export?_type=Patient,Observation", "requiresAccessToken" : false, "output" : [{ "type" : "Patient", "url" : "https://storagesample.blob.core.windows.net/sampleoutput/patient_file_1.ndjson" },{ "type" : "Patient", "url" : "https://storagesample.blob.core.windows.net/sampleoutput/patient_file_2.ndjson" },{ "type" : "Observation", "url" : "https://storagesample.blob.core.windows.net/sampleoutput/observation_file_1.ndjson" }], "error" : [{ "type" : "OperationOutcome", "url" : "https://storagesample.blob.core.windows.net/sampleoutput/err_file_1.ndjson" }] }
Example: Poll the status of an export job with an ID of "61b05fbe-6b5f-4b68-aec4-c03d09f51e82"
GET https://select.nextech-api.com/api/r4/Export/61b05fbe-6b5f-4b68-aec4-c03d09f51e82
Cancel export job
HTTP Request
DELETE /r4/Export/{ExportJobID}
Parameters
| Name | Located in | Description | Required | Initial Version |
|---|---|---|---|---|
| ExportJobID | path | ID of the export job to cancel. Returned in the Content-Location HTTP header in the HTTP response to the kick-off request |
Yes | 16.9 |
Example: Cancel an export job with an ID of "61b05fbe-6b5f-4b68-aec4-c03d09f51e82"
DELETE https://select.nextech-api.com/api/r4/Export/61b05fbe-6b5f-4b68-aec4-c03d09f51e82
Frequently Asked Questions
Resetting Expired Partner Credentials
If your partner credentials expire you will have to reset them by:
- Going to Azure Active Directory by clicking here.
- Enter your expired credentials.
- Follow the prompts it gives you.
- Your password is now reset.
Missing Practitioners
If the practitioners endpoint is not showing all of the expected practitioners check this before opening a support case.
- Inside the Nextech application go to the Contacts module, select the provider that is not showing up.
- Confirm that the practitioner is not marked Inactive on the checkbox on the right hand side.
- Find the "Linked User" section and confirm that it is mapped to a unique account that is just for that practitioner.
Practitoners need their own user account to work with the practitoners endpoint. Additional documentation can be provided on request.