-
Notifications
You must be signed in to change notification settings - Fork 369
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MockClient
returns incorrect data when searching with token
parameters due to the way matchesTokenFilter
operates
#4509
Labels
bug
Something isn't working
fhir-datastore
Related to the FHIR datastore, includes API and FHIR operations
Milestone
Comments
Thanks @pamella - I added comments to your draft PR. This all looks good to me 👍 Thank you 🙏 |
github-merge-queue bot
pushed a commit
that referenced
this issue
May 6, 2024
… in `matchesTokenFilter` (#4516) * Add initial token match support of Identifier and CodeableConcept * Remove console.log * Fixed observation test --------- Co-authored-by: Cody Ebberson <cody@ebberson.com>
Thanks @pamella |
medplumbot
added a commit
that referenced
this issue
May 25, 2024
Fix age display in PatientSummary (#4484)Fixes #4471 - DetectedIssue.status valueset and search param (#4483) Qualify columns with table name in generated SQL (#4487) fix(migrations): only take lock if migrating (#4490) Document updating profiles (#4402) Run expand tests against old and new (#4503) Adding OpenCareHub support post (#4504) [Medplum Provider app] Various fixes and touchups (#4500) ci(agent): add workflow for building agent outside of a release (#4512) feat(agent): `Agent/$reload-config` operation (#4457) Remove broken links to Foo Provider (#4518) Dependency upgrades 2024-05-06 (#4515) PatientSummary and provider app tweaks (#4521) Fixes #4509 - Improve exact match search support for token parameters in `matchesTokenFilter` (#4516) Link to new Demo Applications (#4514) Clarify that autobatching only applies to `GET` requests (#4479) Added missing useEffect dependency in chat demo (#4527) fix: allows CORS for `keyvalue` API (#4476) Fixes #4508 - MeasureReport-subject search param backport (#4530) Fix CLI update-server version flag (#4534) Patient summary appointments and encounters links (#4524) Remove unused DB columns (#4532) fix(agent): unwrap response for `$reload-config` by id (#4542) `PatientSummary` Problem List uses US Core profile (#4535) fix(cli): always exit with exit code 1 after error occurs during command (#4536) Add failing test about validating nested extensions (#4548) Add error message when `cli` fails on login (#4507) Remove functions moved to core (#4547) fix: AttachmentDisplay use uncached url for download link (#4501) feat(agent): respect `Agent.status` and `Agent.channel.endpoint.status` being `off` (#4523) CMS 1500 and Superbill (#4543) Demo Bot: Agent Setup (#4555) feat(Subscription): add `author` as a `SearchParameter` (#4540) Dependency upgrades 2024-05-13 (#4544) Full linked Project ordering in CodeSystem lookup (#4522) Disable super admin refresh tokens (#4492) Minor fixes for the agent setup bot (#4560) docs(agent): document how logging works with `Bot` and `Agent` (#4563) Split rate limits into two buckets (#4568) Properly detect array elements (#4569) Apply filter to ValueSet with expansion.contains (#4570) More efficiently validate included concepts (#4573) Dependency upgrades 2024-05-20 (#4574) tweak(agent): add timezone in status `lastUpdated` time (#4564) fix(client/keyvalue): set keyvalue content-type text (#4575) Allow configuring server default rate limits (#4491) feat(cli): add `token` command to get access token (#4579) Updating device resources and videos (#4578) fix(subscriptions): don't retry ws subs if sub is deleted (#4577) Add support for 'pr' filter operation (#4584) Super admin endpoint for database stats (#4443)
Merged
github-merge-queue bot
pushed a commit
that referenced
this issue
May 25, 2024
Fix age display in PatientSummary (#4484)Fixes #4471 - DetectedIssue.status valueset and search param (#4483) Qualify columns with table name in generated SQL (#4487) fix(migrations): only take lock if migrating (#4490) Document updating profiles (#4402) Run expand tests against old and new (#4503) Adding OpenCareHub support post (#4504) [Medplum Provider app] Various fixes and touchups (#4500) ci(agent): add workflow for building agent outside of a release (#4512) feat(agent): `Agent/$reload-config` operation (#4457) Remove broken links to Foo Provider (#4518) Dependency upgrades 2024-05-06 (#4515) PatientSummary and provider app tweaks (#4521) Fixes #4509 - Improve exact match search support for token parameters in `matchesTokenFilter` (#4516) Link to new Demo Applications (#4514) Clarify that autobatching only applies to `GET` requests (#4479) Added missing useEffect dependency in chat demo (#4527) fix: allows CORS for `keyvalue` API (#4476) Fixes #4508 - MeasureReport-subject search param backport (#4530) Fix CLI update-server version flag (#4534) Patient summary appointments and encounters links (#4524) Remove unused DB columns (#4532) fix(agent): unwrap response for `$reload-config` by id (#4542) `PatientSummary` Problem List uses US Core profile (#4535) fix(cli): always exit with exit code 1 after error occurs during command (#4536) Add failing test about validating nested extensions (#4548) Add error message when `cli` fails on login (#4507) Remove functions moved to core (#4547) fix: AttachmentDisplay use uncached url for download link (#4501) feat(agent): respect `Agent.status` and `Agent.channel.endpoint.status` being `off` (#4523) CMS 1500 and Superbill (#4543) Demo Bot: Agent Setup (#4555) feat(Subscription): add `author` as a `SearchParameter` (#4540) Dependency upgrades 2024-05-13 (#4544) Full linked Project ordering in CodeSystem lookup (#4522) Disable super admin refresh tokens (#4492) Minor fixes for the agent setup bot (#4560) docs(agent): document how logging works with `Bot` and `Agent` (#4563) Split rate limits into two buckets (#4568) Properly detect array elements (#4569) Apply filter to ValueSet with expansion.contains (#4570) More efficiently validate included concepts (#4573) Dependency upgrades 2024-05-20 (#4574) tweak(agent): add timezone in status `lastUpdated` time (#4564) fix(client/keyvalue): set keyvalue content-type text (#4575) Allow configuring server default rate limits (#4491) feat(cli): add `token` command to get access token (#4579) Updating device resources and videos (#4578) fix(subscriptions): don't retry ws subs if sub is deleted (#4577) Add support for 'pr' filter operation (#4584) Super admin endpoint for database stats (#4443)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug
Something isn't working
fhir-datastore
Related to the FHIR datastore, includes API and FHIR operations
Issue
MockClient
returns incorrect data when searching withtoken
parameters because the current implementation of thematchesTokenFilter
function does not support exact match searches, as specified in the FHIR documentation.Problem
In the original implementation, the
matchesTokenFilter
function uses theincludes
method to check if the token value is included in the search parameter. This implementation does not support exact match searches, as specified in the FHIR documentation.Taking into account that the
MockClient
uses theMemoryRepository
which uses thematchesSearchRequest
function to filter the resources, we can get incorrect results when searching withtoken
parameters. For example, ifmockClient.upsertResource
is called with an observation with code12345-6
and then anothermockClient.upsertResource
is called with an observation with code1234
, the first will be replaced by the second one becauseMemoryRepository
will be used and it will consider they are the same resource because thematchesSearchRequest
function will returntrue
when it should returnfalse
.Examples
Example 1
When searching for a patient with the
identifier
value1234567890
, thematchesTokenFilter
function will returntrue
for anyidentifier
value that includes1234567890
, such as1234
,12345
, etc.When we add the following test to packages/core/src/search/match.test.ts, it fails when it should pass:
➡️ Click to expand and see the code
Example 2
When searching for an observation with the
code
value12345-6
, thematchesTokenFilter
function will returntrue
for anycode
value that includes12345-6
, such as12345
,12345-
, etc.When we add the following test to packages/core/src/search/match.test.ts, it fails when it should pass:
➡️ Click to expand and see the code
Proposed solution
That being said, I thought about a partial solution that would allow us to support exact match searches for
token
parameters. I say partial because it would address the identifier and code types. Here is a code snippet:➡️ Click to expand and see the code
I was working on this solution, however I wonder if:
matches*
functions that are using thematchesStringFilter
function. For example,matchesAccessPolicyResourcePolicy
andmatchesCriteria
.MockClient
class.So I would like to know your opinion about all of this.
Please let me know if you have any questions or need further information. I am looking forward to your feedback. Thank you!
The text was updated successfully, but these errors were encountered: