Skip to content

πŸš€ Auto-PR: Merge test β†’ main - #1026

Merged
quotentiroler merged 10 commits into
mainfrom
test
Aug 16, 2026
Merged

πŸš€ Auto-PR: Merge test β†’ main#1026
quotentiroler merged 10 commits into
mainfrom
test

Conversation

@proxy-smart-releaser

@proxy-smart-releaser proxy-smart-releaser Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Automated Pull Request πŸ€–

This PR was automatically created to merge changes from test into main.

Changes:

  • Commits ahead of main: 9
  • Commits behind main: 0
  • TODOs remaining in codebase: 3

Review: Please review the changes before merging.

Last updated: 2026-08-16 13:57:53 UTC

quotentiroler and others added 10 commits August 16, 2026 14:02
…field

`application/smart-api-access` has an optional `query` β€” "array of strings
acting as hints to the client, indicating queries it might want to make"
(SHL protocol spec; HL7 smart-health-cards-and-links IG). We never emitted
it, and that gap is the whole reason `complete` exists: a scoped link had no
way to say what it WAS, so a boolean was added saying what it was not.

A study-scoped share now carries

  "query": ["ImagingStudy?identifier=urn:oid:<uid>"]

which is the identifier filter scopeFhirRequest already forces, so the query
the recipient is handed is exactly the one the proxy allows. A test asserts
that agreement rather than trusting the two strings to stay in step.

This is what fixes the behaviour behind the original report. The proxy is
default-deny, so a viewer holding a study link fired its usual record sweep
and had almost all of it rejected β€” which the portal drew as a dashboard of
empty cards, and then as "complete summary" over the top. Hiding empty cards
treated the symptom; a recipient that knows what to ask for does not generate
them.

Whole-patient shares deliberately get no hints. Listing the reachable types
would name the withheld ones by omission, which is more than the patient
agreed to disclose.

`maxhealth_records_withheld` replaces what is left of `complete`: whether the
patient held records back. Nothing in either spec describes that, so it is
prefixed rather than dressed up as standard. Note it is FALSE for a
study-scoped share β€” scoping is what the link is for, not withholding, and
conflating the two is what made `complete` useless to both viewers.

`complete` is still emitted and marked deprecated; the deployed portal reads
it, and absent would read as "complete" there. It goes once both viewers ship.

Also fixed: isCompleteShare took `selectiveScope?: unknown` and tested
truthiness, so a present-but-empty scope counted as narrowing. The mint site
normalises that to undefined so it never fired, but the invariant lived at the
call site rather than in the function, and `unknown` is what stopped it using
isSelectiveScopeActive two functions below. Now typed and delegating, with a
test for the empty case.
πŸ§ͺ Auto-PR: Merge `develop` β†’ `test`
…flag

`maxhealth_records_withheld` was added an hour ago for a warning neither viewer
is going to show, so it ships nowhere. Removed before it became a field we had
to keep emitting for someone.

What replaces it costs nothing: `complete` is sound as long as only `true` is
acted on. `true` means no selective scope and no study scope β€” the patient's
whole record, which is worth saying. `false` is the ambiguous half, and no
longer has to carry meaning: what a narrowed share covers is what the spec's
`query` hints now say.

So the recipient is told something only when it can be said truthfully, and a
narrowed share says nothing rather than raising a caveat the reader has to
interpret. isCompleteShare is documented as affirmation-only rather than
deprecated.
πŸ§ͺ Auto-PR: Merge `develop` β†’ `test`
@quotentiroler
quotentiroler merged commit 9c36df8 into main Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant