-
Notifications
You must be signed in to change notification settings - Fork 574
Open
Labels
VSTS-BacklogOn VSTS BacklogOn VSTS Backlog
Milestone
Description
User story
As a user, I want to recursively iterate results so that there's no need to use multiple _include/_revinclude search parameters in order to iterate circular references.
According to the spec, recursive calls allow recursively iterating over circular references.
For example:
- Observation?_include:iterate=Observation:derived-from --> here derived-from is a reference of type Observation
- Organization?_revinclude:iterate=Organization:partof --> similarly, partof is a reference of type Observation
- CareTeam?_include=CareTeam:participant&_include:iterate=Patient:general-practitioner --> Here, there's a 'hidden' recursion since CareTeam:participant can reference multiple resource types, including CareTeam.
A question was submitted on the chat.fhir.org discussion: https://chat.fhir.org/#narrow/stream/179166-implementers/topic/_include.3Aiterate.20recursive.20iteration/near/211691246
The recursive implementation can be handled similarly. to the way multiple result sets are implemented, using a recursive call to the Visit and writing the include limit cte.
Acceptance criteria
- When I do _include/_revinclude:iterate on circular references, the results are included recursively and the correct results are returned. The search parameter can be at any part of the search query.
- The recursion depth is limited to avoid performance issues
- Each recursive iteration result should be limited by a configurable MaxCount (preferably, use the same Include limit)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
VSTS-BacklogOn VSTS BacklogOn VSTS Backlog