Search for patient records

Who can use this how-to

  • Existing customers using digital record retrieval
  • Existing customers with a direct connection to Carequality (i.e., without digital record retrieval)

To search for patient records, you first need to identify organizations that have seen your patient. Then you can request any documents for that patient from each of those organizations.

If you want to know where you can get patient records from, explore a list of active Carequality participants with this search tool.

You can also check out the Carequality test patient data for context on the code examples we provide.

You have two options for finding and obtaining a patient’s record: 

  1. Search for a patient using the Redox Record Locator Service: If you don’t know where the patient is located or if the patient may exists in multiple locations, you can ask Redox to provide a list of possibilities. This is the the most common option since it allows you to identify all of the organizations where a patient’s record may exist.
  2. Search for a patient with your own location search: If you have a static list of locations you wish to search or know exactly which organizations have records for the patient, you can search those specific organizations or locations directly. Keep in mind that this means you can only search one organization at a time.

Redox patient ID

For every patient, your system assigns a local patient ID, which may or may not be unique.

Redox also assigns a unique network patient ID for the same patient, which is used to identify the patient within the Framework.

As a result, the patient ID in the data on demand repository isn't the same as the patient ID in the Framework. To find the network ID for a patient, send a PatientSearch.Query with the patient demographics to the Redox gateway: 2.16.840.1.113883.3.6147.458.2.

Use curl for technical validation

You can copy the code examples we provide and send the test requests with curl (learn more about curl) instead of Postman. Keep in mind though that you need to remove the comments from the code examples (starting with //) and replace any variables (e.g., {{variable here}}) to use them. Also, note that some of the code examples are abbreviated, so be mindful of that if you're copying them for your own use.

Canada URL

If you're operating in Canada, you must tweak the Redox hostname slightly. All you need to do is add a ca in that URL like this: https://api.ca.redoxengine.com.

Regardless of the patient search option you use, each query contains required metadata fields that identify the requesting user and their organization, specify the purpose of use, and direct the request to the target organization. These fields exist within the Meta section of the query.

Field
Description
Notes
Meta.Destinations.ID
A universally unique identifier (UUID) for the destination you wish to search.
This ID is different for staging and production environments. Check out the destination ID table further down for specifics.
For most patient searches, this is a Redox destination within record locator service.
For document searches, this is a Carequality destination.
For responding with information about your patients, this is your own document repository.
Meta.FacilityCode
The OID of the organization you wish to query.
This isn't necessary for patient searches with record locator service.
Meta.Extensions.organization-name
The name of the organization running the query.
Generally, this is the name of your organization or the covered entity that you are providing services for.
Meta.Extensions.sender-organization-id
The organizational OID to identify your organization as the one sending the request.
Meta.Extensions.user-id
Contains either the name of the user sending the request or the name of the relevant provider.
This should be a human-readable identifier and is required for audit purposes.
The provider’s name should still be populated when an automated process runs the query. For example, a provider may have an automated process triggered after completing a patient visit, in which case, the query runs in the background on the provider’s behalf.
Meta.Extensions.user-role
Defines the role of the user sending the request.
Meta.Extensions.purpose-of-use
The purpose of use for this request (e.g., Treatment).
You must qualify for a "Treatment" purpose of use when using digital record retrieval.

You can see how the Meta fields are populated in this example:

Destination IDs

You must populate any test requests with the appropriate destination ID in the Meta.Destinations array based on the environment and type of requests:

Request purposeStaging IDProduction ID
Query for/create/update/delete an organizationa07afe3b-d247-4415-827f-6837707e1b8b5d0fd248-6c52-4ad9-b907-ae10bf2dcc39
Search for a patient with record locator serviceadf917b5-1496-4241-87e2-ed20434b1fdb97f2dc1d-c71b-43a7-a436-9b789d44c804
Search for a patient within a specific organization1ca254a8-8d42-4593-abb4-b21399d9de576391b961-55ae-430b-a789-cf575f03fca0
Search for a clinical summary/documentec745338-8849-43ad-a7ce-4bc5bf1d8b89628cbf79-1156-4923-b9d0-285906160ed6
Save patient details and documents to your repositoryThis is specific to your org—you can find the correct ID in the digital record retrieval wizard.This is specific to your org—you can find the correct ID in the digital record retrieval wizard.

Option 1: Search with Record Locator Service

This popular option relies on Redox Record Locator Service to do the heavy lifting for you. Record locator service looks for your patient's record at Carequality participant facilities within the same areas as your organization and the patient's home address (if supplied). Record locator service also leverages results from other Redox client searches so we can go beyond the search area, if possible. 

  1. If you already have the network patient ID, you can skip to step 3. If you don't have the network patient ID, using Postman or curl, send a PatientSearch.Query request with the patient's demographics to the Redox gateway (2.16.840.1.113883.3.6147.458.2).
  2. Record locator services takes the patient's demographics and returns the network patient ID.
  3. Using Postman or curl, send a PatientSearch.LocationQuery request with the network patient ID to the record locator destination (adf917b5-1496-4241-87e2-ed20434b1fdb for staging requests; 97f2dc1d-c71b-43a7-a436-9b789d44c804 for production requests).
  4. The response returns a list of locations where the patient exists—along with the patient’s localized IDs at each location, which we validate.

Notes about the location search response

The Meta.Extensions.task-status.string field contains a status of either Active or Success.

Status
Definition
Results
Active
The process is asynchronously collecting locations.
The Patients array populates with any partial results as they become available.
Success
The process has completed and all possible locations were found.
Any available results have been returned.
If the Patients array is empty, it means no patients were found.

The response waits up to 10 seconds to reach a Success state. If unable to reach Success in that time, the response retains an Active status. You can retry the exact request repeatedly until it reaches a Success state.

Review your search results later

To review the results of your search again later, you can provide the value returned in Meta.Extensions.task-id.string on subsequent requests.

Same demographics, same results

If you run a new search with the same patient demographics within a 24-hour period, you see the same results. Record Locator Service doesn't trigger a new search to your connections unless you have new or modified patient demographics.

If you know exactly where a patient was seen previously, you can search for a patient at an individual organization. If you want to search multiple organizations, you must search them one at a time.

  1. If you already have an organization and its respective OID to search, you can skip to step 4. If you don’t have an OID for the organization you want to search, send the Organization.Query request. With this query, you search by ZIP code radius or organization name.
  2. If the request is successful, you receive a synchronous Organization.QueryResponse with the relevant organization results.
  3. From the results list, you can select one or all of these organizations to then run a patient search.
  4. Now that you have an organization to search, send the PatientSearch.Query request with the patient's demographics to see if that organization has your patient’s records. You must use the organization’s OID in each request.

    Where to find the OID

    The OID is found in the FacilityCode field of the Organization.QueryResponse that you received in the previous step.

  5. If your search matches a patient at the given organization, the response returns the patient’s identifier and additional details.
    If a patient isn’t found, the response returns an empty array.
  6. Repeat steps 4 and 5 for every organization you want to search.

Next steps