observation $lastn
Last N Observations Query
Description: The lastn query meets the common need for searching for the most recent or last n=number of observations for a subject. For example, retrieving the last 5 temperatures for a patient to view trends or fetching the most recent laboratory results or vitals signs. To ask a server to return the last n=number of observations, the lastn query uses the normal search parameters defined for the Observation resource. However, rather than their normal use, they are interpreted as inputs - i.e.. instead of requiring that the resources literally contain the search parameters, they are passed to a server algorithm of some kind that uses them to determine the most appropriate matches.
The request for a lastn query SHALL include:
- A
$lastnoperation parameter - A subject using either the
patientorsubjectsearch parameter - A
categoryparameter and/or a search parameter that contains a code element in its FHIRpath expression. ( e.g.,codeorcode-value-concept)
The request for a lastn query MAY include:
- Other Observation search parameters and modifiers
The response from a lastn query is a set of observations:
-
Filtered by additional parameters
- If not explicitly filtered by status then will include statuses of 'entered-in-error'
-
Ordered first by “equivalent”
Observation.codevalue- Codes SHALL be considered equivalent if the
coding.valueandcoding.systemare the same. - Text only codes SHALL be treated and grouped based on the text.
- For codes with translations (multiple codings), the code translations are assumed to be equal and the grouping by code SHALL follow the transitive property of equality. For example:
Observation.code for observation a Observation.code for observation b Observation.code for observation c number of groups [codes/text in each group] a b c 3 [a],[b],[c] a b a,c 2 [a.c],[b] a b a,b 1 [a,b] 'textM' 'Text' 't e x t' 3 ['text'],['Text'],['t e x t'] - Codes SHALL be considered equivalent if the
-
The ordering of the “equivalent” code groups is not specified.
-
Ordered secondly (within each code group) from most recent effective time to the oldest effective time. For further guidance, refer here on sorting.
-
Limited to the number of requested responses per group specified by the optional max query parameter
- In case of a tie—when the effective times for more than one Observation in the same code group—both will be returned. Therefore, more Observations may be returned than is specified in max. For example, 4 Observations instead of 3 if the 3rd and 4th most recent observation had the same effective time.
-
If no maximum number is given then only the most recent Observation in each group is returned.
Note that the individual Observation.code values used for grouping might not be explicit in the request, for example if a category of Observations is requested, or if a code is specified with the :below modifier.
The set of returned observations should represent distinct real-world observations and not the same observation with changes in status or versions. If there are no matches, the lastn query SHALL return an empty search set with no error, but may include an operation outcome with further advice.
Comments: The key differences between this query operation and simply searching Observation using the combination of _count and _sort parameters are:
- The lastn query returns only the last N resources for each code group. In comparison, although the
_countquery method and sorting by code, restricts the number of results per page, it doesn't restrict the total number of matches for each code, so you may need to page through several “A” Observations before getting to a “B” Observation. - With the lastn query, the server is responsible for grouping the observations by codes. This frees the client from needing to determine which codes she should ask for.
This operation cannot be performed on observations that the user is not authorized to see. It is assumed that the server has identified and secured the context appropriately, and can either associate the authorization context with a single patient, or determine whether the context has the rights to the nominated patient, if there is one. If there is no nominated patient (e.g. the operation is invoked at the system level) and the context is not associated with a single patient record, then the server should return an error. Specifying the relationship between the context, a user and patient records is outside the scope of this specification.
Affects State: false
System: false
Type: true
Instance: false
URL: http://hl7.org/fhir/build/OperationDefinition/Observation-lastn
Parameters
- max [in] 0..1 positiveInt —
maxis an optional input parameter to the lastn query operation. It is used to specify the maximum number of Observations to return from each group. For example for the query "Fetch the last 3 results for all vitals for a patient"max= 3. - return [out] 1..1 Bundle — The set of most recent N Observations that match the lastn query search criteria.