Query Strings
Minimum CorEMR Version: 6.4.0
Starting in CorEMR version 6.4.0, CWS supports query strings for filtering.
Query strings allow you to send extra parameters to an endpoint to customize the data you receive. A query string is added to the end of a GET URL after a question mark (?
) and contains key-value pairs, like ?key=value
. If you need to include more than one parameter, you can separate them with an ampersand (&
).
For example, if you want to filter a list of patients by their last name and limit the results to 10, you might send a request like /ws/v3/patients?lname=Smith&limit=10
. Query strings in CWS make it easy to filter, sort, or paginate data without changing the endpoint itself, providing flexibility in how you access information.
Limiting and Ordering
Limit
The limit
parameter specifies the maximum number of results to be returned.
Limit Example
/ws/patients?limit=10
Order
The order
parameter specifies the sorting column and order that the data is displayed in.
The column and order are given in a comma-separated format.
Order must be either asc
or desc
.
Order Example
- Column:
lname
- Order:
asc
/ws/patients?order=lname,asc
Datatype Filters
Many fields are filterable in 6.4.
These fields are indicated by a check mark in the 6.4 Filter
column in the Get Return Fields
table.
-
Bool
Boolean filters can be specified in query parameters as either 0 or 1.
Boolean Filter Example
Request all chronic problems:
/ws/problems?chronic=1
-
Date / Datetime
Date filters must be in ISO 8601 format (1994-11-05).
Single date filtering is not supported. All date fields must be filtered using a comma-separated date range (start_date,end_date
).Date Filter Example
Request alerts that were created between 1970-01-01 and 2024-01-01:
/ws/alerts/?created_date=1970-01-01,2024-01-01
-
String
String filters are entered "as is", without the need for quotation marks.
String Filter Examples
Request all Male patients:
/ws/patients/?sex=M
Request all patients with agency County:
/ws/patients/?agency=County
-
Integer
Integer filters are entered "as is".
Integer Filter Examples
Request problems with severity of 5:
/ws/problems/?severity=5
Request tasks in task category 6:
/ws/tasks/?task_category_id=6
Filtering Multiple Values
CWS supports filtering multiple values by using comma-separated lists.
Example Multi-Value Filter
To filter multiple values in a single field, you can comma-separate the values, like this:
/ws/problems/?created_user_id=1,3,5
This example would return all problems that were created by users with IDs 1, 3 and 5.
Pagination
CWS supports pagination, using the page
and per_page
query strings.
Pagination Example
- page:
1
- per_page:
1
/ws/alerts/?page=1&per_page=1
{
"records": [
{
"id": 1,
"external_id": "example_external_id",
"category_name": "Bottom Bunk",
"category_id": 1,
"created_date": "2022-08-05 16:16:01.000",
"created_user": "example_user",
"created_user_id": 1,
"expires_date": null,
"removed_date": "2022-08-05 16:16:23.000",
"removed_user": "example_user",
"removed_user_id": 1
}
],
"pagination": {
"current_page": "1",
"per_page": "1",
"total_pages": 102,
"total_records": 102,
"next_page_url": "/ws/alerts/?page=2&per_page=1",
"prev_page_url": null
}
}